我想让一个scrapy爬虫在一个可能使用something like this的 celery 任务 worker 中不断运行。 .或按照建议 in the docs
这个想法是使用爬虫来查询返回 XML 响应的外部 API。我想将我想查询的 URL(或查询参数并让爬虫构建 URL)传递给爬虫,爬虫会进行 URL 调用,并将提取的项目返回给我。一旦它开始运行,我如何将我想要获取的这个新 URL 传递给爬虫。我不想每次给它一个新的 URL 时都重新启动爬虫,而是希望爬虫闲置等待 URL 爬取。
我发现在另一个python进程中运行scrapy的两种方法使用一个新进程来运行爬虫。我不想每次我想爬取一个URL时都 fork 和拆除一个新进程,因为那很漂亮昂贵和不必要的。
最佳答案
只要有一个蜘蛛来轮询一个数据库(或文件?),当出现一个新的 URL 时,它会为它创建并产生一个新的 Request() 对象。
您可以很容易地手动构建它。可能有比这更好的方法,但这基本上就是我为开放代理爬虫所做的。蜘蛛从数据库中获取所有“潜在”代理的列表,并为每个代理生成一个 Request() 对象——当它们返回时,它们会被发送到链中并由下游中间件进行验证,它们的记录由项目管道。
关于python - 如何将新 URL 传递给 Scrapy Crawler,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16704753/