1

我已经寻找了很多解决方案,也许这只是我的一个错误。

我正在使用 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 值作为项目完全导入。有没有办法做到这一点?

4

0 回答 0