python爬虫系列开发scrapy掌握(一)

什么是scrapy

Scrapy是一种用于抓取网站和提取结构化数据的应用程序框架,可用于广泛的有用应用程序,如数据挖掘,信息处理或历史存档。

尽管Scrapy最初是为网络抓取而设计的,但它也可以用于使用API(例如Amazon Associates Web Services)或作为通用网络爬虫来提取数据。

Hello world

对于我们程序员来说,最好的入门就是hello world了,下面我们来写一个hello world 的实例

首先把下面的代码写入一个文档中,并保存为 helloworld.py

然后打开命令行输入运行指令

运行完成之后,把helloworld.json中的数据复制粘贴到在线json格式工具中,然后如下所示:

解析代码

当你运行该命令时,Scrapy在其中查找Spider定义并通过其爬虫引擎运行它。

通过向start_urls 属性中定义的URL发出请求开始爬行,并调用默认回调方法parse,将响应对象作为参数传递。在parse回调中,我们使用CSS Selector循环遍历quote元素,使用提取的引用文本和作者生成Python dict,查找下一页的链接并使用与parse回调相同的方法调用另一个请求 。

在这里,您会注意到Scrapy的一个主要优点:请求是异步调度处理的。这意味着Scrapy不需要等待请求完成和处理,它可以在此期间发送另一个请求或执行其他操作。这也意味着即使某些请求失败或在处理过程中发生错误,其他请求也可以继续运行。

这使您能够进行非常快速的爬网(以容错方式同时发送多个并发请求),但Scrapy还可以通过一些设置控制爬网的优雅性。您可以执行以下操作:在每个请求之间设置下载延迟,限制每个域或每个IP的并发请求数量,甚至使用自动限制扩展来尝试自动计算这些请求。

更多

您已经了解了如何使用Scrapy从网站中提取和存储项目,但这只是表面。Scrapy提供了许多强大的功能,可以轻松高效地进行抓取,例如:

内置支持使用扩展的CSS选择器和XPath表达式从HTML / XML源中选择和提取数据,并使用正则表达式提取辅助方法。

一个交互式shell控制台(支持IPython),用于尝试使用CSS和XPath表达式来抓取数据,在编写或调试蜘蛛时非常有用。

内置支持以多种格式(JSON,CSV,XML)生成Feed导出并将其存储在多个后端(FTP,S3,本地文件系统)中

强大的编码支持和自动检测,用于处理外部,非标准和损坏的编码声明。

强大的可扩展性支持,允许您使用信号和定义良好的API(中间件,扩展和 管道)插入您自己的功能。

广泛的内置扩展和中间件用于处理:

cookie和会话处理

HTTP功能,如压缩,身份验证,缓存

用户代理欺骗

的robots.txt

爬行深度限制

一个Telnet控制台,用于连接到Scrapy进程内部运行的Python控制台,以内省和调试您的爬虫

还有其他好东西,比如可重复使用的蜘蛛,可以从Sitemaps和XML / CSV Feed中抓取网站,自动下载与抓取项目相关联的图像(或任何其他媒体)的媒体管道,缓存DNS解析器等等!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180925G09TRJ00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券