本节介绍了部署Scrapy蜘蛛以定期运行它们的不同选项。在本地机器中运行Scrapy蜘蛛对于(早期)开发阶段来说非常方便,但是当您需要执行长时间运行的蜘蛛或移动蜘蛛以继续在生产中运行时。这就是部署Scrapy蜘蛛的解决方案的用武之地。 部署Scrapy蜘蛛的热门选择是: Scrapyd(开源) Scrapy Cloud(基于云)   部署到Scrapyd服务器 Scrapyd是一个运行Scrapy蜘蛛的开源应用程序。它为服务器提供HTTP API,能够运行和监控Scrapy蜘蛛。 要将蜘蛛部署到Scrapyd,您可以使用scrapyd-client软件包提供的scrapyd-depl

在Scrapy中,诸如请求,响应和项目之类的对象具有有限的生命周期:它们被创建,使用一段时间,最后被销毁。 从所有这些对象中,Request可能是具有最长生命周期的对象,因为它在Scheduler队列中保持等待,直到处理它为止。欲了解更多信息请参阅架构概述。 由于这些Scrapy对象具有(相当长的)生命周期,因此总是存在将它们累积在内存中而不正确释放它们的风险,从而导致所谓的“内存泄漏”。 为了帮助调试内存泄漏,Scrapy提供了一种用于跟踪名为trackref的对象引用的内置机制,您还可以使用名为Guppy的第三方库来进行更高级的内存调试(有关详细信息,请参阅下文)。必须从Telnet控制台

响应对象 classscrapy.http.Response(url [,status = 200,headers = None,body = b”,flags = None,request = None ]) 甲Response对象表示的HTTP响应,这通常是下载(由下载器)并馈送到蜘蛛进行处理。 参数: url(字符串) – 此响应的URL status(整数) – 响应的HTTP状态。默认为200。 headers(dict) – 此响应的标头。dict值可以是字符串(对于单值标头)或列表(对于多值标头)。 body(字节) –

本节包含可用内置命令的列表,其中包含说明和一些用法示例。请记住,您始终可以通过运行以获取有关每个命令的更多信息: scrapy <command> -h   你可以看到所有可用的命令: scrapy -h   有两种命令,一种只能在Scrapy项目内部工作(特定于项目的命令)和那些在没有活动的Scrapy项目(全局命令)的情况下工作的命令,尽管从项目内部运行时它们可能表现略有不同(因为他们会使用项目覆盖设置)。 全局命令: startproject genspider settings runspider shell fetch view version 仅限项

您可以-a 在运行蜘蛛时使用该选项为您的蜘蛛提供命令行参数: scrapy crawl quotes -o quotes-humor.json -a tag=humor   这些参数传递给Spider的__init__方法,默​​认情况下变为spider属性。 在此示例中,为参数提供的值tag将通过self.tag。您可以使用此选项使您的蜘蛛只获取具有特定标记的引号,并根据参数构建URL: import scrapy class QuotesSpider(scrapy.Spider): name = “quotes” def start_requests(self): url = ‘

提取数据 学习如何使用Scrapy提取数据的最佳方法是使用shell Scrapy shell尝试选择器。跑: scrapy shell ‘http://quotes.toscrape.com/page/1/’ 注意 当从命令行运行Scrapy shell时,请记住始终将URL括在引号中,否则包含参数(即&字符)的url 将不起作用。 在Windows上,请使用双引号: scrapy shell “http://quotes.toscrape.com/page/1/” 你会看到类似的东西: [ … Scrapy log here … ] 2016-09-19 12:09:27

引擎盖下发生了什么? Scrapy会调度Spider方法scrapy.Request返回的对象start_requests。在收到每个响应后,它实例化Response对象并调用与请求相关的回调方法(在本例中为 parse方法),将响应作为参数传递。 start_requests方法的快捷方式 您可以只使用URL列表定义类属性,而不是实现从URL start_requests()生成scrapy.Request对象的方法start_urls。然后,默认实现将使用此列表start_requests()来为您的spider创建初始请求: import scrapy class QuotesSpide

要让我们的蜘蛛工作,请转到项目的顶级目录并运行: scrapy crawl quotes   此命令运行quotes我们刚添加的名称的spider ,它将发送一些quotes.toscrape.com域请求。您将获得类似于此的输出: … (omitted for brevity) 2016-12-16 21:24:05 [scrapy.core.engine] INFO: Spider opened 2016-12-16 21:24:05 [scrapy.extensions.logstats] INFO: Crawled 0 pages (at 0 pages/min), sc

蜘蛛是您定义的类,Scrapy用来从网站(或一组网站)中提取信息。它们必须子类化 scrapy.Spider并定义要生成的初始请求,可选地如何跟踪页面中的链接,以及如何解析下载的页面内容以提取数据。 这是我们第一个蜘蛛的代码。将其保存在 项目目录quotes_spider.py下的tutorial/spiders文件中: import scrapy class QuotesSpider(scrapy.Spider): name = “quotes” def start_requests(self): urls = [ ‘http://quotes.toscrape.com/page/1/’,

最近,谷歌浏览器宣布他们将很快开始在网页上阻止混合内容,也称为不安全内容。此功能将从 2019 年 12 月开始逐步推出。这应该让网站所有者有足够的时间检查混合内容错误并在块上线之前修复它们。否则会导致用户体验不佳、流量流失、销量下降