首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何建立一个基于Scrapy的网络爬虫来永久运行?

如何建立一个基于Scrapy的网络爬虫来永久运行?
EN

Stack Overflow用户
提问于 2010-02-28 04:07:13
回答 2查看 5.8K关注 0票数 11

我想建立一个基于Scrapy的网络爬虫,从几个新闻门户网站抓取新闻图片。我想让这个爬虫:

  1. 永远跑 这意味着它将定期重新访问一些门户页面,以获得更新。
  2. 安排优先次序。 对不同类型的URL给予不同的优先级。
  3. 多线程取料

我读过Scrapy文档,但没有发现与我列出的内容相关的东西(也许我不够小心)。这里有人知道怎么做吗?或者给出一些想法/例子。谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-02-28 04:47:32

Scrapy是一个网站爬升的框架,因此,它旨在支持您的标准,但它不会为您跳槽;您可能需要相对熟悉一些任务的模块。

  1. 永远运行取决于调用Scrapy的应用程序。你告诉蜘蛛去哪里,什么时候去那里。
  2. 提供优先级是调度中间件的工作,您必须创建并插入Scrapy。这方面的文档看起来很不稳定,我还没有看过代码--原则上,函数就在那里。
  3. 刮伤是天生的,本质上是异步的很可能是您想要的:请求B可以在请求A仍未完成时得到满足。底层连接引擎并不阻止您真正的多线程,但Scrapy不提供线程服务。

Scrapy是一个库,而不是应用程序。模块的用户需要做大量的工作(代码)。

票数 12
EN

Stack Overflow用户

发布于 2016-08-18 03:30:27

关于跑步的要求-永远,这里有一些细节。

您需要捕获signals.spider_idle信号,在连接到该信号的方法中,您需要引发一个DontCloseSpider异常。当没有挂起的请求时,spider_idle信号被发送到刮伤引擎,默认情况下蜘蛛将关闭。你可以拦截这个过程。

见代码blow:

代码语言:javascript
运行
复制
import scrapy
from scrapy.exceptions import DontCloseSpider
from scrapy.xlib.pydispatch import dispatcher

class FooSpider(scrapy.Spider):
    def __init__(self, *args, **kwargs):
        super(FooSpider, self).__init__(*args, **kwargs)
        dispatcher.connect(self.spider_idle, signals.spider_idle)

    def spider_idle(self):
        #you can revisit your portal urls in this method
        raise DontCloseSpider 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2350049

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档