我想建立一个基于 Scrapy 的网络爬虫,从几个新闻门户网站抓取新闻图片。我希望这个爬虫是:
永远奔跑
意味着它将定期重新访问一些门户页面以获取更新。
安排优先事项。
为不同类型的 URL 赋予不同的优先级。
多线程获取
我已经阅读了 Scrapy 文档,但没有找到与我列出的内容相关的内容(可能是我不够小心)。这里有人知道怎么做吗?或者只是给出一些想法/例子。谢谢!
我想建立一个基于 Scrapy 的网络爬虫,从几个新闻门户网站抓取新闻图片。我希望这个爬虫是:
永远奔跑
意味着它将定期重新访问一些门户页面以获取更新。
安排优先事项。
为不同类型的 URL 赋予不同的优先级。
多线程获取
我已经阅读了 Scrapy 文档,但没有找到与我列出的内容相关的内容(可能是我不够小心)。这里有人知道怎么做吗?或者只是给出一些想法/例子。谢谢!
Scrapy 是一个用于抓取网站的框架,因此,它旨在支持您的标准,但它不会为您开箱即用;对于某些任务,您可能必须相对熟悉该模块。
Scrapy 是一个库,而不是一个应用程序。模块的用户需要做大量的工作(代码)。
关于永远运行的要求,这里有一些细节。
您需要捕获signals.spider_idle
信号,并且在连接到信号的方法中,您需要引发DontCloseSpider
异常。spider_idle
当没有待处理的请求时,该信号会发送到 scrapy 引擎,并且默认情况下,spider 将关闭。你可以拦截这个过程。
见代码吹:
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