【问题标题】:Scrapy exports all results in one row in SQLiteScrapy 将所有结果导出到 SQLite 的一行中
【发布时间】:2015-12-30 23:17:40
【问题描述】:

我正在使用 Scrapy 制作一个基本的蜘蛛,并希望使用 SQLite 存储数据。蜘蛛工作正常并保存了我想要的数据,但它将所有数据写入数据库的同一行。

这是我的蜘蛛:

    def parse(self, response):

    for sel in response.xpath('//*[@class="class"]'):
        item = ScrapedItem()
        item['Name'] = sel.xpath('*/header/div//h2/a/text()').extract()
        item['Site'] = sel.xpath('*/header/div/a[1]/text()').extract()
        item['Category'] = sel.xpath('*/header/div/h6[3]/text()').extract()

        yield item

这是我的管道:

import sqlite3 as lite
from xyz import settings
from xyz import items
con = None

class Pipeline(object):

    def __init__(self):
        self.setupDBCon()
        self.createTables()

    def process_item(self, item, spider):
        self.storeInfoInDb(item)
        return item

def storeInfoInDb(self, item):
        self.cur.execute("INSERT INTO Table(\
            Name, \
            Site, \
            Category\
            ) \
        VALUES( ?, ?, ?, ? )", \
        ( \
            str(item.get('Name', '')),
            str(item.get('Site', '')),
            str(item.get('Category', ''))
        ))
        print item.get('Name', '')
        self.con.commit()

def setupDBCon(self):
    self.con = lite.connect('test.db')
    self.cur = self.con.cursor()

def __del__(self):
    self.closeDB()

def createTables(self):
    self.dropAgencyTable()
    self.createAgencyTable()

def createTable(self):
    self.cur.execute("CREATE TABLE IF NOT EXISTS Table(id INTEGER PRIMARY KEY NOT NULL, \
        Name TEXT, \
        Site TEXT, \
        Category TEXT )")

def dropTable(self):
    self.cur.execute("DROP TABLE IF EXISTS Agency")

def closeDB(self):
    self.con.close()

如何将我的爬取数据保存在每个爬取项目的单独一行中?

【问题讨论】:

标签: sqlite scrapy


【解决方案1】:

看我这个answer。问题是您的蜘蛛正在提取所有项目并将其存储在一个列表中并将其交给项目管道。因此,项目管道不是一次获取一个信息。解决方案是使用循环并一一遍历所有所需的行。

【讨论】:

    猜你喜欢
    • 2022-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-16
    • 1970-01-01
    • 2019-09-17
    • 2016-07-25
    相关资源
    最近更新 更多