Scrapy(Python):用相同的项目名称覆盖预先存在的数据
我想知道是否有一种方法可以用新数据替换旧数据,其中项目与Scrapy相同 例如,假设我从雅虎金融(yahoo finance)搜集了某只股票的股票数据。然后,在新数据发布之后,我想更新我以前使用过的Scrapy(Python):用相同的项目名称覆盖预先存在的数据,python,scrapy,Python,Scrapy,我想知道是否有一种方法可以用新数据替换旧数据,其中项目与Scrapy相同 例如,假设我从雅虎金融(yahoo finance)搜集了某只股票的股票数据。然后,在新数据发布之后,我想更新我以前使用过的output.csv文件中的股票数据 我有点惊讶,这不是Scrapy在命令行中已经做过的事情(或者他们已经做了,我只是瞎了眼,找不到它) 我正在考虑配置pipelines.py来完成以下任务: # pipelines.py: class stockPipeline(object): def
output.csv
文件中的股票数据
我有点惊讶,这不是Scrapy在命令行中已经做过的事情(或者他们已经做了,我只是瞎了眼,找不到它)
我正在考虑配置pipelines.py
来完成以下任务:
# pipelines.py:
class stockPipeline(object):
def update_item(self, item, spider):
with open('output.csv', 'rt') as f:
reader = csv.DictReader(f)
for stock in reader:
if stock['name'] == item['name']:
# Somehow get scrapy to overwrite this particular row...
# Or, maybe get DictWriter to do it for us instead of scrapy??
将数据通过管道传输到真实的数据库中,您的问题将立即得到解决
例如,假设您将切换到MySQL——在这种情况下,问题将归结为如果记录不存在则进行插入,否则进行插入和更新。将数据管道化到真实的数据库中,您的问题将立即得到解决 例如,假设您将切换到
MySQL
——在这种情况下,问题只会归结为在记录不存在时进行插入,否则进行插入和更新