0
我有一個抓取程序,它從多個網站獲取數據並將信息更新到一個mysql表中。我正在使用scrapy編寫爬蟲程序。爬蟲程序會插入/更新大量列。是否可以批量插入/更新scrapy中的項目?Scrapy批量插入
我有一個抓取程序,它從多個網站獲取數據並將信息更新到一個mysql表中。我正在使用scrapy編寫爬蟲程序。爬蟲程序會插入/更新大量列。是否可以批量插入/更新scrapy中的項目?Scrapy批量插入
不知道你問,但你可以設置MySQL管道在scrapy項目pipelines.py,像這樣:
class SQL(object):
def __init__(self):
self.conn = MySQLdb.connect(user='user', passwd='pass', db='DB', host='servername', charset='utf8')
self.cursor = self.conn.cursor()
def process_item(self, item, spider):
try:
self.cursor.execute('INSERT INTO table (month, year, date) VALUES (%s,%s,%s)', (item['month'], item['year'], item['date']))
self.conn.commit()
except MySQLdb.Error, e:
print item
print "Error %d: %s" % (e.args[0], e.args[1])
return item
然後settings.py中啓用它
ITEM_PIPELINES = {'PROJECTNAME.pipelines.SQL': 300}
如果scrapy一次寫入sql一條記錄,與在一個批量查詢中寫入10,000條記錄相比,這將花費大量時間。我想知道當scrapy將記錄刷新到MySQL時,我是否可以指定這樣的數字(如10,000) – katrix 2015-02-08 04:35:34