如果帮到你的话,请点个赞
一:将item变为字典,而且scrapy添加字典用语句insert_one
错误代码:
def process_item(self, item, spider):
name = item.__class__.__name__
if item:
self.db[name].insert_one(item) # 保存数据
print("插入数据{}到Mongo成功".format(item))
return item
正确写法:
def process_item(self, item, spider):
name = item.__class__.__name__
if item:
self.db[name].insert_one(dict(item)) # 保存数据
print("插入数据{}到Mongo成功".format(item))
return item
二:在items中添加_id = iscrapy.Field()
添加完以后在spider里添加以下代码,还得引入random模块(为了赋予id值,而不是什么内存区号),即在文件开头写上 import random
item['_id'] = str(random.randint(1,100000))
三:注意在spider.py中yield的缩进
yield item一定要跟循环完的语句保持一致,即赋值完一组以后,马上紧跟着yield item
def parse_page(self,response):
item = ParkItem()
item['name'] =
item['area']=
yield item #生成item的当前字典以后传送数据到pipelines进而保存到数据库