我已经寻找了很多解决方案,也许这只是我的一个错误。
我正在使用 python/scrapy 框架来抓取几个站点。这些网站为我提供了他们数据集的 .CSV 文件。因此,我没有逐行解析他们提供的gridview,而是将scrapy设置为下载.CSV文件,然后打开CSV文件并将每个值写入一个Scrapy项目。
我将并发请求设置为 1。我认为这会阻止 Scrapy 解析列表中的下一个请求,直到它完成添加所有项目。不幸的是,.CSV 文件越大,Scrapy 解析行并将它们作为项目导入所需的时间就越长。在发出下一个请求之前,它通常会执行大约一半的 500kb CSV 文件。
logfiles = sorted([ f for f in os.listdir(logdir) if f.startswith('QuickSearch')])
logfiles = str(logfiles).replace("['", "").replace("']", "")
##look for downloaded CSV to open
try:
with open(logfiles, 'rU') as f: ##open
reader = csv.reader(f)
for row in reader:
item['state'] = 'Florida'
item['county'] = county ##variable set from response.url
item['saleDate'] = row[0]
item['caseNumber'] = row[2]
..
yield item
except:
pass
f.close()
print ">>>>>>>>>>>F CLOSED"
os.remove(logfiles)
在继续下一个请求之前,我需要 Scrapy 将所有 CSV 值作为项目完全导入。有没有办法做到这一点?