Python 刮痧挂在墙上

Python 刮痧挂在墙上,python,csv,scrapy,Python,Csv,Scrapy,我一直在寻找解决办法,也许这只是我这边的一个错误 我正在使用python/scrapy框架来刮取几个站点。这些网站为我提供了数据集的.CSV文件。因此,我没有逐行解析它们提供的gridview,而是将scrapy设置为下载.CSV文件,然后打开CSV文件并将每个值作为scrapy项写入 我已将并发请求设置为1。我认为这将阻止Scrapy解析列表中的下一个请求,直到它完成添加所有项目。不幸的是,.CSV文件越大,Scrapy解析行并将其作为项目导入所需的时间就越长。在发出下一个请求之前,它通常会处

我一直在寻找解决办法,也许这只是我这边的一个错误

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

你能发布你的蜘蛛代码吗?如果concurrent requests设置为1,并且您的CSV解析代码在spider中,那么您应该具有所需的行为。我错过什么了吗?@pault。这是spider代码:当您的代码忽略所有异常时,您无法找出错误所在。@Changaco当我删除try-it进程时,它会像正常情况一样,但出现相同的问题。问题不在于正在处理的代码,而在于scrapy在解析CSV文件时调用下一个请求。它最终将更改county变量,因为调用了下一个请求。我将所有并发设置都设置为1。我不明白它将如何解析100个或更少的项目,然后发出下一个请求。CSV文件平均每行有500-3000行。经过进一步测试,我在解析之前将county写入文件,从而为我的代码提供了一种变通方法。我见过类似的问题,比如Scrapy在内存中保存了大量的项目。在刮削结束时,它将使用超过700mb的ram,并在大约一分钟内输出30000个左右的项目。希望有人能发现这个问题。