python - 如何将新 URL 传递给 Scrapy Crawler

标签 python django multithreading celery scrapy

我想让一个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/

相关文章:

python - 抓取时无法获取头条内容

python - 最长公共(public)子序列的界

python - 将换行值写入 python 文件而不换行

python - 在 Django+Bootstrap 中使表单字段更宽

python - Django,两个注释结果之间的除法无法正确计算

c# - 调用线程 .NET .this 与 .control

java - java中倒计时锁存器的用法

python - PyQt5区分ok和cancel命令

Django REST Framework : how to make Id field required upon POST, 即非只读字段?

c++ - condition_variable.notify_all 是否应该被互斥锁覆盖?