我正在编写一个 scrapy 蜘蛛,它将许多 url 作为输入并将它们分类(作为项目返回)。这些 URL 通过我的爬虫程序提供给蜘蛛程序start_requests()
method.
有些网址不需要下载就可以分类,所以我想yield
直接Item
对于他们来说start_requests()
,这是scrapy禁止的。我怎样才能规避这个问题?
我考虑过在自定义中间件中捕获这些请求,这会将它们变成虚假的Response
对象,然后我可以将其转换为Item
请求回调中的对象,但欢迎任何更干净的解决方案。
我认为使用蜘蛛中间件并覆盖 start_requests() 将是一个好的开始。
在中间件中,您应该循环遍历 start_urls 中的所有 url,并且可以使用条件语句来处理不同类型的 url。
- For your special URLs which do not require a request, you can
- 直接调用管道的 process_item(),不要忘记导入管道并从您的网址为此创建一个 scrapy.item
- 正如您所提到的,在请求中将 url 作为元传递,并有一个单独的解析函数,该函数仅返回 url
- 对于所有剩余的 URL,您可以启动“正常”请求,因为您可能已经定义了
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)