既然是知识应用型书籍,对爬虫做个简单的小结吧。从手写爬虫的阶段来看,核心包括urllib库、编码与解码、伪装,urllib库的运用是实现爬虫的技术基础,解码与编码问题包括url的编码与内容的编码与解码,至于伪装技术,则包括浏览器头部的伪装、Cookie的伪装、ip代理。从爬虫框架来看,则需要理解清楚模块之间的调用,items存储要爬取的数据,spiders对爬取请求相应,pipelines对爬取的数据进行加工,通过在settings中设置来构建cookie禁止、ip代理池、用户代理池。总体而言,实践与理论结合,虽然也有一些瑕疵,比如使用pipelines要注意需要有item的返回,使用select来代替node,但是,作为爬虫入门的书籍,还是不错的
精通Python网络爬虫:核心技术、框架与项目实战
在微信读书打开划线
26第一篇 理论基础篇
应用于搜索引擎中对站点进行爬取收录,应用于数据分析与挖掘中对数据进行采集,应用于金融分析中对金融数据进行采集,除此之外,还可以将网络爬虫应用于舆情监测与分析、目标客户数据的收集等各个领域。
1.1 初识网络爬虫
如何覆盖互联网中更多的优质网页?又如何筛选这些重复的页面?
不仅要了解爬虫如何实现,还需要知道一些常见爬虫的算法
1.2 为什么要学网络爬虫
大数据时代,要进行数据分析,首先要有数据源,而学习爬虫,可以让我们获取更多的数据源,并且这些数据源可以按我们的目的进行采集,去掉很多无关数据。
就业的角度来说,爬虫工程师目前来说属于紧缺人才,并且薪资待遇普遍较高,所以,深层次地掌握这门技术,对于就业来说,是非常有利的。
1.3 网络爬虫的组成
网络爬虫由控制节点、爬虫节点、资源库构成。
1.4 网络爬虫的类型
网络爬虫按照实现的技术和结构可以分为通用网络爬虫、聚焦网络爬虫、增量式网络爬虫、深层网络爬虫等类型。在实际的网络爬虫中,通常是这几类爬虫的组合体。
首先我们为大家介绍通用网络爬虫(General Purpose Web Crawler)。通用网络爬虫又叫作全网爬虫,顾名思义,通用网络爬虫爬取的目标资源在全互联网中。通用网络爬虫所爬取的目标数据是巨大的,并且爬行的范围也是非常大的,正是由于其爬取的数据是海量数据,故而对于这类爬虫来说,其爬取的性能要求是非常高的。这种网络爬虫主要应用于大型搜索引擎中,有非常高的应用价值。 通用网络爬虫主要由初始URL集合、URL队列、页面爬行模块、页面分析模块、页面数据库、链接过滤模块等构成。通用网络爬虫在爬行的时候会采取一定的爬行策略,主要有深度优先爬行策略和广度优先爬行策略。具体的爬行策略,我们将在第3章讲解,在此,我们只需要知道通用网络爬虫的基本构成和主要的爬行策略。
深层页面则隐藏在表单后面,不能通过静态链接直接获取,是需要提交一定的关键词之后才能够获取得到的页面。在互联网中,深层页面的数量往往比表层页面的数量要多很多,故而,我们需要想办法爬取深层页面。
深层网络爬虫主要由URL列表、LVS列表(LVS指的是标签/数值集合,即填充表单的数据源)、爬行控制器、解析器、LVS控制器、表单分析器、表单处理器、响应分析器等部分构成。
3.2 爬行策略
爬行策略主要有深度优先爬行策略、广度优先爬行策略、大站优先策略、反链策略、其他爬行策略等。下面我们将分别进行介绍。
如果单纯按反链策略去决定一个网页的优先程度的话,那么可能会出现大量的作弊情况。比如,做一些垃圾站群,并将这些网站互相链接,如果这样的话,每个站点都将获得较高的反链,从而达到作弊的目的。作为爬虫项目方,我们当然不希望受到这种作弊行为的干扰,所以,如果采用反向链接策略去爬取的话,一般会考虑可靠的反链数。
OPIC策略、Partial PageRank策略等。
3.3 网页更新策略
搜索引擎查询某个关键词的时候,会出现一个排名结果,在排名结果中,通常会有大量的网页,但是,大部分用户都只会关注排名靠前的网页,所以,在爬虫服务器资源有限的情况下,爬虫会优先更新排名结果靠前的网页。这种更新策略,我们称之为用户体验策略,那么在这种策略中,爬虫到底何时去爬取这些排名结果靠前的网页呢?此时,爬取中会保留对应网页的多个历史版本,并进行对应分析,依据这多个历史版本的内容更新、搜索质量影响、用户体验等信息,来确定对这些网页的爬取周期。
3.5 身份识别
Robots协议是需要网络爬虫共同遵守的协议,对于一些禁止的URL地址,网络爬虫则不应爬取访问。同时,如果爬虫在爬取某一个站点时陷入死循环,造成该站点的服务压力过大,如果有正确的身份设置,那么该站点的站长则可以想办法联系到该爬虫方,然后停止对应的爬虫程序。 当然,有些爬虫会伪装成其他爬虫或浏览器去爬取网站,以获得一些额外数据,或者有些爬虫,会无视Robots协议的限制而任意爬取。从技术的角度来说,这些行为实现起来不难,但是这些行为是我们不提倡的,因为只有共同遵守一个良好的网络规则,才能够达到爬虫方和站点服务方的双赢。
3.6 网络爬虫实现技术
开发网络爬虫的语言有很多,常见的语言有:Python、Java、PHP、Node.JS、C++、Go语言等。以下我们将分别介绍一下用这些语言写爬虫的特点: ❑Python:爬虫框架非常丰富,并且多线程的处理能力较强,并且简单易学、代码简洁,优点很多。 ❑Java:适合开发大型爬虫项目。 ❑PHP:后端处理很强,代码很简洁,模块也较丰富,但是并发能力相对来说较弱。 ❑Node.JS:支持高并发与多线程处理。 ❑C++:运行速度快,适合开发大型爬虫项目,成本较高。 ❑Go语言:同样高并发能力非常强。 以上分别介绍了写爬虫的常见实现技术,本书中,笔者将会以Python语言为例,带领大家一步步的地学好爬虫的开发。
3.7 实例——metaseeker
可以从官网下载metaseeker工具(http://www.gooseeker.com/pro/product.html),进入后,选择第三种方案下载
3.8 小结
3.8 小结 1)聚焦网络爬虫,由于其需要有目的地进行爬取,所以对于通用网络爬虫来说,必须要增加目标的定义和过滤机制,具体来说,此时,其执行原理和过程需要比通用网络爬虫多出3步,即目标的定义、无关链接的过滤、下一步要爬取的URL地址的选取。 2)常见的网页更新策略主要有3种:用户体验策略、历史数据策略、聚类分析策略。 3)聚类分析可以依据商品之间的共性进行相应的处理,将共性较多的商品聚为一类。 4)在爬虫对网页爬取的过程中,爬虫必然需要访问对应的网页,此时,正规的爬虫一般会告诉对应网页的网站站长其爬虫身份。网站的管理员则可以通过爬虫告知的身份信息对爬虫的身份进行识别,我们称这个过程为爬虫的身份识别过程。 5)开发网络爬虫的语言有很多,常见的语言有Python、Java、PHP、Node.JS、C++、Go语言等。 6)metaseeker是一款比较实用的网站数据采集程序,使用该采集程序,可以让大家比较快速、形象地了解爬虫的工作过程。
第4章 Urllib库与URLError异常处理
Python2.X中,分Urllib库和Urllib2库,Python3.X之后合并到Urllib库中
4.2 快速使用Urllib爬取网页
)file.read()读取文件的全部内容,与readlines不同的是,read会把读取到的内容赋给一个字符串变量。 2)file.readlines()读取文件的全部内容,与read不同的是,readlines会把读取到的内容赋给一个列表变量,若要读取全部内容,推荐使用这种方式。 3)File.readline()读取文件的一行内容。
>>> fhandle=open("D:/Python35/myweb/part4/1.html", "wb") >>> fhandle.write(data) 99437 >>> fhandle.close()
urlretrieve()函数直接将对应信息写入本地文件
Urlretrieve执行的过程中,会产生一些缓存,如果我们想清除这些缓存信息,可以使用urlcleanup()进行清除,输入如下代码即可清除Urlretrieve执行所造成的缓存:  >>> urllib.request.urlcleanup()
file.getcode()
如果想要获取当前所爬取的URL地址,我们可以使用geturl()来实现
4.3 浏览器的模拟——Headers属性
import urllib.request url= "http://blog.csdn.net/weiwei_pig/article/details/51178226" headers=("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.122 Safari/537.36 SE 2.X MetaSr 1.0") opener = urllib.request.build_opener() opener.addheaders = [headers] data=opener.open(url).read()
想法
0暂无想法
热门划线
121.3 网络爬虫的组成
控制节点,也叫作爬虫的中央控制器,主要负责根据URL地址分配线程,并调用爬虫节点进行具体的爬行。
3.2 爬行策略
一个网页的反向链接数,指的是该网页被其他网页指向的次数,这个次数在一定程度上代表着该网页被其他网页的推荐次数。
1.4 网络爬虫的类型
深层网络爬虫主要由URL列表、LVS列表(LVS指的是标签/数值集合,即填充表单的数据源)、爬行控制器、解析器、LVS控制器、表单分析器、表单处理器、响应分析器等部分构成。
第1章 什么是网络爬虫
前者我们称为通用网络爬虫,后者我们称为聚焦网络爬虫。
1.3 网络爬虫的组成
网络爬虫由控制节点、爬虫节点、资源库构成
1.4 网络爬虫的类型
网络爬虫按照实现的技术和结构可以分为通用网络爬虫、聚焦网络爬虫、增量式网络爬虫、深层网络爬虫等类型。在实际的网络爬虫中,通常是这几类爬虫的组合体。
通用网络爬虫又叫作全网爬虫,顾名思义,通用网络爬虫爬取的目标资源在全互联网中
12.11 避免被禁止
设置好之后,就可以避免被这一类反爬虫机制的网站禁止。
1.4 网络爬虫的类型
聚焦网络爬虫主要应用在对特定信息的爬取中,主要为某一类特定的人群提供服务
5.3 正则表达式常见函数
常见的正则表达式函数有re.match()函数、re.search()函数、全局匹配函数、re.sub()函数
1.4 网络爬虫的类型
通用网络爬虫主要由初始URL集合、URL队列、页面爬行模块、页面分析模块、页面数据库、链接过滤模块等构成。通用网络爬虫在爬行的时候会采取一定的爬行策略,主要有深度优先爬行策略和广度优先爬行策略。
3.3 网页更新策略
将聚类分析算法运用在爬虫对网页的更新上,我们可以这样做,如图3-4所示。
公开点评
28相对于Scrapy0.25文档,写的很通俗易懂。按照文章里的代码依样画葫芦确实也能爬到不少数据 但是,还是需要全局性地去掌握了python,网页的设计构造,还有数据库的语句,因为如果只是掌握了简单的基础,读起来很痛苦,当然很痛苦我也读完了,摊手,我总是安慰自己:里面不懂的内容和你自己的智力没有关系,如果掌握了全面的知识,现在的问题就不是问题了。 但是为什么不掌握了所有的基础知识再来看这本书呢,毕竟知识的掌握和应用,总是相辅相成的,就像你了解一个地方,博览群书固然不错,但是亲身踏足也许也没有什么不好,当然我总是这样安慰自己,知道了一个知识点一门编程语言的应用场景,再去系统学习这门语言,会有很多不一样的角度 另外Fiddler对于mac用户非常不友好,希望韦大大能介绍一款用户界面友好的抓包软件 最后,这本书只是一个起点,想要深刻了解爬虫,乃至数据分析,还要继续学习
1.scrapy框架写的很细(赞赞赞👍) 2.防反爬取:模拟登录,IP池,用户池,设置延时 3.数据导入数据库 4.没有涉及的:没有细写分布式爬取。数据处理不够详细(得另找书看看数据可视化numpy,matplotlib,pandos之类的,可以看看《Python网络数据采集》《Python数据处理》) 总体不错,买了实体书看了一遍
本书由浅入深,循序渐进地讲解了Python网络爬虫系列知识,理论与实践相结合,读起来并不会感觉到枯燥。 书中案例基本以python3来实现,但也照顾到了还一直坚持使用python2的读者。从使用urllib等标准库写一些简单的定向爬虫,到用Scarpy框架来实现一些较复杂的爬虫,各种知识点都有涵盖。喜欢爬虫的此书一定不要错过,值得一读。
看开头几章节不像本好书,写的太生硬了,有点晦涩难懂。但是从讲编程开始,就变得流畅多了。小白直接略过前几章,往后面看,会有收获的。我能给个七八分吧,毕竟还没看完,看完再总结。
虽然已经读完一遍,而且和b站上的一个视频感觉是配套的。内容一模一样。但是还是不甚了了,需要再读一遍,边读边操作。
本书从技术、工具与实战3个维度讲解了Python网络爬虫: 技术维度:详细讲解了Python网络爬虫实现的核心技术,包括网络爬虫的工作原理、如何用urllib库编写网络爬虫、爬虫的异常处理、正则表达式、爬虫中Cookie的使用、爬虫的浏览器伪装技术、定向爬取技术、反爬虫技术,以及如何自己动手编写网络爬虫; 工具维度:以流行的Python网络爬虫框架Scrapy为对象,详细讲解了Scrapy的功能使用、高级技巧、架构设计、实现原理,以及如何通过Scrapy来更便捷、高效地编写网络爬虫; 实战维度:以实战为导向,是本书的主旨,除了完全通过手动编程实现网络爬虫和通过Scrapy框架实现网络爬虫的实战案例以外,本书还有博客爬取、图片爬取、模拟登录等多个综合性的网络爬虫实践案例。 作者在Python领域有非常深厚的积累,不仅精通Python网络爬虫,在Python机器学习、Python数据分析与挖掘
理论知识讲解比较少,更偏重实践,适合需要快速上手的人,深度还有些欠缺。
条理清晰,讲的非常清楚,是我看过几本爬虫书籍里最能让我看下去的书,干货满满!有机会搞本实体珍藏!爱了爱了。另:各位书友求累死好书推荐,python类,网络安全类,内容不限,请大家不吝赐教,谢谢大噶!
自学python 到目前为止最有意思的一本书。
相似推荐
8
Python编程:从入门到实践
别怕,Excel VBA其实很简单
Cocos Creator 3.x 游戏开发入门与实战
PPT设计的艺术:人人都用得上的PPT设计书
Python编程:从入门到实践(第3版)(2025年新版)
深入浅出数据分析
和秋叶一起学Excel(第2版)