我正在编写一个scrapy蜘蛛,它将许多网址作为输入并将它们分类为类别(作为项目返回)。这些 URL 通过我的爬虫start_requests()方法提供给蜘蛛。
有些网址不用下载就可以分类,所以我想yield直接在 中Item为它们添加一个start_requests(),这是scrapy禁止的。我怎样才能规避这个?
我曾考虑在自定义中间件中捕获这些请求,将它们转换为虚假Response对象,然后我可以Item在请求回调中将其转换为对象,但欢迎任何更简洁的解决方案。
我认为使用蜘蛛中间件并覆盖 start_requests() 将是一个好的开始。
在中间件中,您应该循环遍历 start_urls 中的所有 url,并且可以使用条件语句来处理不同类型的 url。