Scrapy 重新包装刮痕蜘蛛类物品
为了使事情有条理,我决定蜘蛛将填充三个项目类 每个item类都有各种填充的字段Scrapy 重新包装刮痕蜘蛛类物品,scrapy,pipeline,web-crawler,Scrapy,Pipeline,Web Crawler,为了使事情有条理,我决定蜘蛛将填充三个项目类 每个item类都有各种填充的字段 class item_01(Item): item1 = Field() item2 = Field() item3 = Field() class item_02(Item): item4 = Field() item5 = Field() class item_03(Item): item6 = Field() item7 = Field() i
class item_01(Item):
item1 = Field()
item2 = Field()
item3 = Field()
class item_02(Item):
item4 = Field()
item5 = Field()
class item_03(Item):
item6 = Field()
item7 = Field()
item8 = Field()
有多个页面可以使用相同的项目进行爬网。
在spider中,我使用XPathItemLoader填充“容器”
目标是将项目传递到mysql管道以填充单个表。但问题是
当我给出三个容器(每页)时,它们作为三个单独的容器被传递到管道中。
它们作为自己的BaseItem通过管道,只填充mysql表中的部分,而将其他列保留为“NULL”
我想做的是将这三个容器重新打包到一个BaseItem中,以便将它们作为单个项传递到管道中
有人对重新包装这些物品有什么建议吗?蜘蛛网还是管道
谢谢我这样做是为了让事情进展顺利,但如果有人能改进或提示更好的解决方案,请分享 在spider中加载我的项目,如下所示:
items = [item1.load_item(), item2.load_item(), item3.load_item()]
然后,我在spider之外定义了一个函数:
def rePackIt(items):
rePackage = rePackageItems()
rePack = {}
for item in items:
rePack.update(dict(item))
for key, value in rePack.items():
rePackage.fields[key] = value
return rePackage
在items.py
中,我添加了:
class rePackageItems(Item):
"""Repackage the items"""
pass
爬行器完成对页面的爬行并加载项目后,我生成:
yield rePackIt(items)
这将带我到pipelines.py
在过程中\u item
打开物品包装时,我执行了以下操作:
def process_item(self, item, spider):
items = item.fields
items现在是一个字典,包含从spider中提取的所有字段,然后我将这些字段插入到单个数据库表中我这样做是为了让事情进展顺利,但是如果有人可以改进或提示更好的解决方案,请与大家分享 在spider中加载我的项目,如下所示:
items = [item1.load_item(), item2.load_item(), item3.load_item()]
然后,我在spider之外定义了一个函数:
def rePackIt(items):
rePackage = rePackageItems()
rePack = {}
for item in items:
rePack.update(dict(item))
for key, value in rePack.items():
rePackage.fields[key] = value
return rePackage
在items.py
中,我添加了:
class rePackageItems(Item):
"""Repackage the items"""
pass
爬行器完成对页面的爬行并加载项目后,我生成:
yield rePackIt(items)
这将带我到pipelines.py
在过程中\u item
打开物品包装时,我执行了以下操作:
def process_item(self, item, spider):
items = item.fields
items现在是一个字典,其中包含从spider提取的所有字段,然后我将这些字段插入到单个数据库表中