我们来看一个网页,大家想想使用 XPath 怎么抓取。 可以看到,在源代码里面没有请抓取我!这段文字。难道这个网页是异步加载?我们现在来看一下网页的请求: 网页也没有发起任何的Ajax 请求。那么,这段文字是从哪里来的? 我们来看一下这个网页对应的 HTML: 整个 HTML 里面,甚至连 JavaScript 都没有。那么这段文字是哪里来的呢? 有点经验的同学,可能会想到看一下这个example.css...
安装 首先,确定你的电脑上已经安装了 Python 3 以及对应的 pip。可以使用下面的命令查看: $ python3 --version Python 3.6.3 $ pip3 --version pip 9.0.1 from /usr/local/lib/python3.6/site-packages (python 3.6) 如果没有安装的话,推荐使 Homebrew 这个工具来进行安装。 pip 是 Python 的一个包管理工具,类似于 npm,可以在线安装、卸载所有的第三方 Python 模块,并自...
爬虫是什么 现在人们说的 Python 写爬虫啊之类的,爬虫当然不是普通的那个爬虫,而是指按照一定的规则获取网络上信息的程序,因为它在获取一个网页信息的同时会从这个网页上获得URL然后再对这个URL获取信息,所以称为爬虫。 爬虫的分类 爬虫之间也有不同,不过大致可以分为以下几类 通用爬虫 这类爬虫的目标从几个URL扩展到整个网络,一般用于为搜索引擎和Web服务提供商采集数据。这类...
导读 A. Jesse Jiryu Davis 是纽约 MongoDB 的工程师。他编写了异步 MongoDB Python 驱动程序 Motor,也是 MongoDB C 驱动程序的开发领袖和 PyMongo 团队成员。 他也为 asyncio 和 Tornado 做了贡献,在 http://emptysqua.re 上写作。 协程 还记得我们对你许下的承诺么?我们可以写出这样的异步代码,它既有回调方式的高效,也有多线程代码的简洁。这个结合是同过一种称为协程c...
导读 A. Jesse Jiryu Davis 是纽约 MongoDB 的工程师。他编写了异步 MongoDB Python 驱动程序 Motor,也是 MongoDB C 驱动程序的开发领袖和 PyMongo 团队成员。 他也为 asyncio 和 Tornado 做了贡献,在 http://emptysqua.re 上写作。 介绍 Guido van Rossum 是主流编程语言 Python 的创造者,Python 社区称他为 BDFL(仁慈的终生大独裁者)——这是一个来自 Monty Python 短剧的...
删除项目后,通常需要保留或导出这些项目,以便在其他应用程序中使用这些项目。毕竟,这是刮擦过程的全部目的。 为此,Scrapy为不同的输出格式提供了一组项目导出器,例如XML,CSV或JSON。 使用项目导出器 如果您赶时间,并且只想使用项目导出器输出已删除的数据,请参阅Feed导出。否则,如果您想知道项目导出器如何工作或需要更多自定义功能(默认导出未涵盖),请继续阅读下面的内...
Scrapy广泛使用信号来通知特定事件发生的时间。您可以在Scrapy项目中捕获一些这些信号(例如使用扩展名)来执行其他任务或扩展Scrapy以添加未提供的开箱即用的功能。 即使信号提供了几个参数,捕获它们的处理程序也不需要接受所有这些参数 – 信号调度机制只会传递处理程序接收的参数。 您可以通过Signals API连接信号(或发送您自己的 信号)。 这是一个简单的示例,展示了如何...
scrapy.statscollectors模块下有几个Stats收集器 ,它们都实现了StatsCollector 类定义的Stats Collector API (它们都是从它们继承的)。 类scrapy.statscollectors.StatsCollector get_value(键,默认=无) 返回给定统计信息键的值,如果不存在则返回默认值。 get_stats() 从当前运行的蜘蛛获取所有统计数据作为词典。 set_value(键,值) 设置给定统计数据键的给定值。 ...
classscrapy.signalmanager.SignalManager(sender = _Anonymous ) connect(接收器,信号,** kwargs ) 将接收器功能连接到信号。 信号可以是任何对象,尽管Scrapy附带了一些预定信号,这些信号记录在信号 部分中。 参数: receiver(callable) – 要连接的函数 signal(object) – 要连接的信号 disconnect(接收器,信号,** kwargs ) 断开接收器...
类scrapy.loader.SpiderLoader 该类负责检索和处理项目中定义的spider类。 可以通过在SPIDER_LOADER_CLASS项目设置中指定其路径来使用自定义蜘蛛装载程序 。它们必须完全实现scrapy.interfaces.ISpiderLoader接口以保证无错执行。 from_settings(设定) Scrapy使用此类方法来创建类的实例。它是使用当前项目设置调用的,它会加载在SPIDER_MODULES 设置模块中递归发现的蜘蛛。 ...
scrapy.settings.SETTINGS_PRIORITIES 设置Scrapy中使用的默认设置优先级的键名和优先级的字典。 每个项目定义一个设置入口点,为其提供标识的代码名称和整数优先级。在设置和检索Settings类中的值时,更高优先级优先于较小优先 级。 SETTINGS_PRIORITIES = { 'default': 0, 'command': 10, 'project': 20, 'spider': 30, 'cmdline': 40, } 有...
本节介绍Scrapy核心API,它适用于扩展和中间件的开发人员。 抓取工具 Scrapy API的主要入口点是Crawler 对象,通过from_crawler类方法传递给扩展。此对象提供对所有Scrapy核心组件的访问,这是扩展访问它们并将其功能挂钩到Scrapy的唯一方法。 Extension Manager负责加载和跟踪已安装的扩展,并通过EXTENSIONS设置配置它,其中包含所有可用扩展的字典及其顺序,类似于您配置下载中间...
扩展框架提供了一种将自己的自定义功能插入Scrapy的机制。 扩展只是在Scrapy启动时实例化的常规类,当初始化扩展时。 扩展设置 扩展使用Scrapy设置来管理其设置,就像任何其他Scrapy代码一样。 扩展程序通常使用自己的名称为其设置添加前缀,以避免与现有(和将来)扩展冲突。例如,处理Google Sitemaps的假设扩展将使用诸如GOOGLESITEMAP_ENABLED,GOOGLESITEMAP_DEPTH等设置 。 ...
内置蜘蛛中间件参考 此页面描述了Scrapy附带的所有蜘蛛中间件组件。有关如何使用它们以及如何编写自己的蜘蛛中间件的信息,请参阅蜘蛛中间件使用指南。 有关默认启用的组件列表(及其订单),请参阅 SPIDER_MIDDLEWARES_BASE设置。 DepthMiddleware 类scrapy.spidermiddlewares.depth.DepthMiddleware DepthMiddleware用于跟踪被抓取站点内每个请求的深度。只要没有先前设置的...
每个中间件组件都是一个Python类,它定义了以下一个或多个方法: 类scrapy.spidermiddlewares.SpiderMiddleware process_spider_input(响应,蜘蛛) 对于通过蜘蛛中间件并进入蜘蛛的每个响应,都会调用此方法进行处理。 process_spider_input()应该返回None或提出异常。 如果它返回None,Scrapy将继续处理此响应,执行所有其他中间件,直到最后,响应被传递给蜘蛛进行处理。 如果...
激活蜘蛛中间件 要激活蜘蛛中间件组件,请将其添加到 SPIDER_MIDDLEWARES设置,该设置是一个dict,其键是中间件类路径,它们的值是中间件命令。 这是一个例子: SPIDER_MIDDLEWARES = { 'myproject.middlewares.CustomSpiderMiddleware': 543, } 该SPIDER_MIDDLEWARES设置与SPIDER_MIDDLEWARES_BASEScrapy中定义的设置合并 (并不意味着被覆盖),然后按顺序排序,以...
此页面描述了Scrapy附带的所有下载中间件组件。有关如何使用它们以及如何编写自己的下载程序中间件的信息,请参阅下载程序中间件使用指南。 有关默认启用的组件列表(及其订单),请参阅 DOWNLOADER_MIDDLEWARES_BASE设置。 CookiesMiddleware 类scrapy.downloadermiddlewares.cookies.CookiesMiddleware 此中间件可用于处理需要cookie的站点,例如使用会话的站点。它跟踪Web...
每个中间件组件都是一个Python类,它定义了以下一个或多个方法: 类scrapy.downloadermiddlewares.DownloaderMiddleware 注意 任何下载器中间件方法也可能返回延迟。 process_request(请求,蜘蛛) 对于通过下载中间件的每个请求,都会调用此方法。 process_request()应该:返回None,返回一个 Response对象,返回一个Request 对象,或者提升IgnoreRequest。 如果它返回None,Sc...
下载器中间件是Scrapy的请求/响应处理的钩子框架。它是一个轻量级的低级系统,用于全局改变Scrapy的请求和响应。 激活下载中间件 要激活下载程序中间件组件,请将其添加到 DOWNLOADER_MIDDLEWARES设置中,该设置是一个dict,其键是中间件类路径,其值是中间件命令。 这是一个例子: DOWNLOADER_MIDDLEWARES = { 'myproject.middlewares.CustomDownloaderMiddleware': 5...
本文档描述了Scrapy的体系结构及其组件的交互方式。 概述 下图显示了Scrapy体系结构及其组件的概述,以及系统内部发生的数据流的概述(由红色箭头显示)。下面包含组件的简要说明,并提供链接以获取有关它们的更多详细信息。数据流也在下面描述。 数据流 该引擎获得初始请求从抓取 蜘蛛。Scrapy中的数据流由执行引擎控制,如下所示: 该引擎安排在请求 调度程序和要求下...