scrapy.spider如何从数据库中取起始URL

scrapy.spider如何从数据库中取起始URL

别再吹冷风 发布于 2021-11-28 字数 178 浏览 699 回复 2

spider的内置参数里面,start_url只支持一行一行的穷举格式.

如果URL全部存储在数据库中,如何让spider从数据库中读取URL去爬行?

比如一次取50条,没了再取,类似这样。

如果你对这篇文章有疑问,欢迎到本站 社区 发帖提问或使用手Q扫描下方二维码加群参与讨论,获取更多帮助。

扫码加入群聊

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

半世蒼涼 2021-11-30 2 楼

老哥,可以详细说一下吗

筱武穆 2021-11-30 1 楼

没了再取怎么理解?

如果是50条start_url处理完就取,可以给第50条url一个特殊的callback,除了产生正常结果外,还去读取剩下的数据。

如果是spider空闲以后再读取,可以绑定一个信号:

from scrapy import signals, Request

#####################

self.crawler.signals.connect(self._on_idle, signals.spider_idle)

#####################

def _on_idle(self, spider):
    if spider is self:
        for url in get_some_urls():
            self.crawler.engine.schedule(Request(url), spider=self)

scrapy不会因为多读取了几条url而崩溃,一般来说不必关心这些细节。