【Python 爬虫教程】

Python 爬虫互联网上存在着大量值得收集的公共信息,而爬虫技术就是获取这些公共信息的主要工具。本书以主流的Scrapy爬虫框架为例,介绍了Python网络爬虫的组成、爬虫框架的使用以及分布式爬虫等内容。本书运用了大量案例和实践,融入了含金量十足的开发经验,使得内容紧密结合实际应用。在此基础上,本书还通过丰富的练习和操作实践,帮助读者巩固所学的内容。本书配以多元的学习资源和支持服务,包括视频、案例素材、学习社区等,为读者提供全方位的学习体验。

开始阅读

概要

互联网上存在着大量值得收集的公共信息,而爬虫技术就是获取这些公共信息的主要工具。本书以主流的Scrapy爬虫框架为例,介绍了Python网络爬虫的组成、爬虫框架的使用以及分布式爬虫等内容。本书运用了大量案例和实践,融入了含金量十足的开发经验,使得内容紧密结合实际应用。在此基础上,本书还通过丰富的练习和操作实践,帮助读者巩固所学的内容。本书配以多元的学习资源和支持服务,包括视频、案例素材、学习社区等,为读者提供全方位的学习体验。

网络爬虫始于一张被称作种子的统一资源地址(URL)列表。

当网络爬虫访问这些统一资源定位器时,它们会甄别出页面上所有的超链接,并将它们写入一张“待访列表”,即所谓爬行疆域。此疆域上的URL将会被按照一套策略循环来访问。如果爬虫在执行的过程中复制归档和保存网站上的信息,这些文件通常储存,使他们可以较容易的被查看。阅读和浏览他们存储的网站上并即时更新的信息,这些被存储的网页又被称为“快照”。越大容量的网页意味着网络爬虫只能在给予的时间内下载越少部分的网页,所以要优先考虑其下载。高变化率意味着网页可能已经被更新或者被取代。一些服务器端软件生成的URL(统一资源定位符)也使得网络爬虫很难避免检索到重复内容。

但是互联网的资源卷帙浩繁,这也意味着网络爬虫只能在一定时间内下载有限数量的网页,因此它需要衡量优先级的下载方式。有时候网页出现、更新和消失的速度很快,也就是说网络爬虫下载的网页在几秒后就已经被修改或甚至删除了。这些都是网络爬虫设计师们所面临的两个问题。

再者,服务器端软件所生成的统一资源地址数量庞大,以致网络爬虫难免也会采集到重复的内容。根据超文本传输协议,无尽组合的参数所返回的页面中,只有很少一部分确实传回正确的内容。例如:数张快照陈列室的网站,可能通过几个参数,让用户选择相关快照:其一是通过四种方法对快照排序,其二是关于快照分辨率的的三种选择,其三是两种文件格式,另加一个用户可否提供内容的选择,这样对于同样的结果会有48种(4*3*2)不同的统一资源地址与其关联。这种数学组合替网络爬虫造成了麻烦,因为它们必须越过这些无关脚本变化的组合,寻找不重复的内容。