我想获取不同域下的网页,这意味着我必须在命令“scrapycrawlmyspider”下使用不同的蜘蛛。但是,由于网页内容不同,我必须使用不同的管道逻辑将数据放入数据库。但对于每个蜘蛛来说,它们必须经历在 settings.py 中定义的所有管道。是否有其他优雅的方法为每个蜘蛛使用单独的管道?
ITEM_PIPELINES
设置是在引擎启动期间为项目中的所有蜘蛛程序全局定义的。每个蜘蛛都不能动态更改它。
以下是一些需要考虑的选项:
-
更改管道代码。跳过/继续处理蜘蛛返回的项目process_item
您的管道的方法,例如:
def process_item(self, item, spider):
if spider.name not in ['spider1', 'spider2']:
return item
# process item
改变你开始爬行的方式。做吧从脚本 http://doc.scrapy.org/en/latest/topics/practices.html#run-scrapy-from-a-script,根据作为参数传递的蜘蛛名称,覆盖您的ITEM_PIPELINES
通话前设置crawler.configure()
.
也可以看看:
- 好斗的。开始爬行后如何更改蜘蛛设置? https://stackoverflow.com/questions/10543997/scrapy-how-to-change-spider-settings-after-start-crawling
- 我可以使用蜘蛛特定的设置吗? https://groups.google.com/forum/#!msg/scrapy-users/Uzj519saPXQ/u_lOaIh6LcsJ
- 使用一个 Scrapy 蜘蛛处理多个网站 https://stackoverflow.com/questions/2396529/using-one-scrapy-spider-for-several-websites
- 相关答案 https://stackoverflow.com/a/6502863/771848
希望有帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)