版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Python网咯爬虫实战.indd12022/2/1711:09:52
内容简介
本书基于Python3,系统全面地讲解了Python网络爬虫的基础知识。全书共分11章,内容
包括网络爬虫概述、网页请求原理与爬虫基础、urllib库与异常处理、requests库、数据解析技术、
BeautifulSoup库、动态页面爬取、爬虫数据的存储、爬虫框架Scrapy、CrawlSpider、图像识别与
文字处理。
本书适合作为高等职业院校电子信息类各专业的教材,也可作为培训学校的培训教材,以及
Python爬虫爱好者的自学用书。
图书在版编目(CIP)数据
Python网络爬虫实战/邓晨曦主编.—北京:中国铁道
出版社有限公司,2022.2
职业教育赛教一体化课程改革系列规划教材
ISBN978-7-113-28658-3
Ⅰ.①P…Ⅱ.①邓…Ⅲ.①软件工具-程序设计-
职业教育-教材Ⅳ.①TP311.56
中国版本图书馆CIP数据核字(2021)第267907号
书名:Python网络爬虫实战
作者:邓晨曦
策划:徐海英王春霞编辑部电话:(010)63551006
责任编辑:王春霞彭立辉
封面制作:刘颖
责任校对:苗丹
责任印制:樊启鹏
出版发行:中国铁道出版社有限公司(100054,北京市西城区右安门西街8号)
网址:/51eds/
印刷:三河市国英印务有限公司
版次:2022年2月第1版2022年2月第1次印刷
开本:850mm×1168mm1/16印张:11.75字数:299千
书号:ISBN978-7-113-28658-3
定价:39.00元
版权所有侵权必究
凡购买铁道版图书,如有印制质量问题,请与本社教材图书营销部联系调换。电话:(010)63550836
打击盗版举报电话:(010)63549461
Python网咯爬虫实战.indd22022/2/228:54:22
前言
为认真贯彻落实教育部实施新时代中国特色高水平高职学校和专业群建设,扎实、持续
地推进职校改革,强化内涵建设和高质量发展,落实双高计划,抓好职业院校信息技术人才培
养方案实施及配套建设,我们统筹规划并启动了“职业教育赛教一体化课程改革系列规划教材”
(云计算技术与应用、大数据技术与应用、网络综合布线、传感器应用技术、物联网.NET开
发、物联网嵌入式开发、物联网移动应用开发、Python网络爬虫实战)。本系列教材是由教
育教学一线专家、教育企业一线工程师、中国铁道出版社有限公司精英数十人团队的匠心之作,
是全体编委精益求精,在日复一日、年复一年的工作中不断探索和超越的教学结晶。本书教学
设计遵循教学规律,涉及内容是真实项目的拆分与提炼。
本书基于Python3,系统全面地讲解了Python网络爬虫的基础知识。全书共分11章,具
体介绍如下:
第1、2章主要介绍网络爬虫的概念及实现原理,希望读者能够明白爬虫爬取网页的过程,
并对产生的一些问题有所了解。
第3~6章详细介绍了网页数据解析的相关技术,包括urllib库的使用、requests库、
lxml、XPath、BeautifulSoup等。
第7章主要介绍动态网页爬取的内容,希望读者掌握抓取动态网页的一些技巧。
第8章主要介绍爬虫数据存储的内容,包括使用MySQL与MongoDB数据库进行数据存
储的相关知识。通过案例实操,讲解了如何一步步从网站中爬取、解析、存储电影信息。希望
读者在存储爬虫数据时根据具体情况灵活选择合理的技术进行运用。
第9、10章主要介绍爬虫框架Scrapy以及自动爬取网页的爬虫CrawlSpider的相关知识。
通过对这两章的学习,可了解框架的基本知识与应用,为以后深入学习打下坚实基础。
第11章主要介绍图像识别与文字处理等内容,希望读者学会处理一些字符格式规范的图
像和简单的验证码。
本书由湖南环境生物职业技术学院的邓晨曦任主编,武汉唯众智创科技有限公司的陈家
枫、仙桃职业学院的李明海、襄阳职业技术学院的田勇、重庆工商职业学院的向涛任副主编。
I
Python网咯爬虫实战.indd12022/2/1711:09:52
Python网络爬虫实战
具体分工如下:邓晨曦编写第1章、第2章、第5章、第6章、第8章、第11章;陈家枫编
写第3章、第4章;李明海编写第7章;田勇编写第9章;向涛编写第10章。全书由邓晨曦
统稿。
由于时间仓促,编者水平有限,书中难免存在疏漏与不妥之处,敬请广大读者批评指正。
编者
2021年7月
II
Python网咯爬虫实战.indd22022/2/1711:09:52
目录
第1章网络爬虫概述12.4抓包工具Fiddler17
2.4.1Fiddler简介17
1.1爬虫产生背景1
2.4.2Fiddler工作原理与界面18
1.1.1企业产生的数据1
2.4.3Fiddler爬取HTTPS设置22
1.1.2数据平台购买的数据1
2.4.4Fiddler捕获Chrome会话23
1.1.3政府/机构公开的数据2
1.1.4数据管理咨询公司的数据2
第3章urllib库与异常处理26
1.1.5爬取的网络数据2
3.1urllib库简介26
1.2爬虫的概念2
3.1.1快速使用urllib爬取网页27
1.3爬虫的用途2
3.1.2urllib数据传输30
1.4爬虫的组成3
3.1.3浏览器模拟——Headers请求
1.5爬虫的类型4
伪装34
1.5.1通用爬虫4
3.2代理服务器设置34
1.5.2聚焦爬虫5
3.3超时设置36
1.5.3累积式和增量式爬虫6
3.4异常处理37
1.5.4表层爬虫和深层爬虫6
3.4.1URLError37
第2章网页请求原理与爬虫基础73.4.2HTTPError38
3.5urllib库爬虫实战——百度贴吧39
2.1爬虫实现原理7
2.1.1通用爬虫7
第4章requests库42
2.1.2聚焦爬虫8
4.1requests库概述42
2.2HTTP基础8
4.1.1实例引入43
2.2.1HTTP与HTTPS8
4.1.2request44
2.2.2HTTP请求过程9
4.1.3response47
2.2.3客户端请求9
4.1.4Robots协议48
2.2.4服务端响应11
4.2高级用法51
2.3网页基础13
4.2.1文件上传51
I
Python网咯爬虫实战.indd12022/2/1711:09:52
Python网络爬虫实战
4.2.2Cookies526.3.5搜索文档树104
4.2.3SSL证书验证556.3.6CSS选择器114
4.2.4会话保持56
第7章动态页面爬取119
第5章数据解析技术577.1动态网页介绍119
5.1网页数据和结构577.1.1JavaScript119
5.1.1网页数据格式577.1.2jQuery120
5.1.2网页结构577.1.3AJAX120
5.2lxml587.1.4DHTML120
5.2.1安装lxml587.2安装Selenium和PhantomJS模块121
5.2.2lxml库的使用597.2.1Selenium下载安装121
5.3XPath637.2.2PhantomJS下载安装122
5.3.1节点关系637.3Selenium和PhantomJS基本操作124
5.3.2XPath语法647.3.1基本使用124
5.3.3节点轴677.3.2声明浏览器对象126
5.4pyquery687.3.3节点查找126
5.4.1pyquery安装687.3.4鼠标动作链129
5.4.2使用pyquery697.3.5填充表单129
7.3.6弹窗处理130
第6章BeautifulSoup库797.3.7页面切换130
6.1BeautifulSoup简介797.3.8页面前进和后退130
6.1.1Windows下安装BeautifulSoup807.3.9Cookies130
6.1.2Linux下安装BeautifulSoup817.3.10页面等待130
6.1.3创建BeautifulSoup对象827.4案例——模拟登录QQ邮箱132
6.2对象种类837.5案例——模拟登录物联网融合云
6.2.1Tag84平台135
6.2.2NavigableString88
6.2.3BeautifulSoup89第8章爬虫数据的存储137
6.2.4Comment908.1数据存储概述137
6.3遍历文档树918.2文件存储138
6.3.1子节点918.2.1TXT文本存储138
6.3.2父节点988.2.2JSON文件存储139
6.3.3兄弟节点998.2.3把数据存储到CSV142
6.3.4前后节点1028.3数据库存储143
II
Python网咯爬虫实战.indd22022/2/1711:09:52
目录
8.3.1MySQL1439.3.1项目创建161
8.3.2MongoDB1459.3.2文件介绍161
8.4使用MySQL存储网站电影信息1509.3.3代码编写163
8.4.1页面分析1509.3.4常用命令167
8.4.2爬取全部页面1519.4Scrapy架构168
8.4.3通过bs4选取数据1529.4.1Scrapy框架介绍168
8.4.4通过MySQL存储电影信息1529.4.2数据流169
8.5使用MongoDB存储网站音乐信息...153
8.5.1页面分析153第10章CrawlSpider170
8.5.2爬取全部页面15310.1CrawlSpider简介170
8.5.3通过bs4选取数据15410.2LinkExtractor链接提取171
8.5.4通过MongoDB存储音乐信息15510.3CrawlSpider实战173
第9章爬虫框架Scrapy156第11章图像识别与文字处理175
9.1常见Python爬虫框架15611.1OCR概述175
9.2Scrapy安装与配置15811.1.1Tesseract176
9.2.1Windows下的安装与配置15811.1.2Pillow和pytesseract176
9.2.2Linux下的安装与配置15911.2处理规范格式的文字178
9.2.3MAC下的安装与配置15911.3验证码读取180
9.3Scrapy基本操作161
III
Python网咯爬虫实战.indd32022/2/1711:09:53
Python网咯爬虫实战.indd42022/2/1711:09:53
第1章
网络爬虫概述
在大数据时代,互联网成了人们获取信息的主要手段,人们习惯利用百度等搜索引擎查找直
接需要的信息与网站,那么搜索引擎是怎样找到这些网站的?其实,类似百度这样的搜索引擎都
是使用网络爬虫从互联网上爬取数据的。本章就对爬虫知识进行详细介绍,让大家对爬虫有基本
的了解。
1.1爬虫产生背景
视频
如今,人类社会已经进入了大数据时代,通过对大量的数据进行分析,能够产
生极大的商业价值。数据已经成为必不可少的部分,因此数据的获取非常重要。数
据的获取方式有以下几种。
1.1.1企业产生的数据
爬虫产生的背景
企业在生产运营中会产生与自身业务相关的大量数据,例如,百度搜索指数、
腾讯公司业绩数据、阿里巴巴集团财务及运营数据、新浪微博微指数等。
大型互联网公司拥有海量用户,有天然的数据积累优势。一些有数据意识的中小型企业,也
开始积累自己的数据。
1.1.2数据平台购买的数据
数据平台是以数据交易为主营业务的平台,例如,数据堂、国云数据市场、贵阳大数据交易
所等数据平台。
在各个数据交易平台上购买各行各业各种类型的数据,根据数据信息、获取难易程度的不同,
价格也会有所不同。
Python网咯爬虫实战.indd12022/2/1711:09:53
Python网络爬虫实战
1.1.3政府/机构公开的数据
政府和机构也会公开一些数据,成为业内权威信息的来源。例如,中华人民共和国国家统
计局数据、中国人民银行调查统计、世界银行公开数据、联合国数据、纳斯达克数据、新浪财
经美股实时行情等。这些数据通常都是各地政府统计上报,或者由行业内专业的网站、机构等
提供。
1.1.4数据管理咨询公司的数据
数据管理咨询公司为了提供专业的咨询服务,会收集和提供与特定业务相关的数据作为支撑。
这些管理咨询公司数量众多,如麦肯锡、埃森哲、尼尔森、艾瑞咨询等。通常,这样的公司都有
庞大的数据团队,一般通过市场调研、问卷调查、固定的样本检测、与各行各业的其他公司合作、
专家对话来获取数据,并根据客户需求制定商业解决方案。
1.1.5爬取的网络数据
如果数据市场上没有需要的数据,或者价格太高不愿意购买,可以利用爬虫技术,爬取网站
上的数据。
无论是搜索引擎,还是个人或单位获取目标数据,都需要从公开网站上爬取大量数据,在此
需求下,爬虫技术应运而生,并迅速发展成为一门成熟的技术。
1.2爬虫的概念
网络爬虫又称网页蜘蛛、网络机器人,在FOAF社区中间经常称为网页追逐者。
视频
如果把互联网比作一张大的蜘蛛网,那么一台计算机上的数据就是蜘蛛网上的一个
猎物,而爬虫程序就是一只小蜘蛛,沿着蜘蛛网抓取自己想要的猎物数据。
这里的数据是指互联网上公开的并且可以访问到的网页信息,而不是网站的后
台信息(没有权限访问),更不是用户注册的信息(非公开的)。
什么是爬虫爬虫官方的名字叫数据采集,英文一般称作Spider,就是通过编程来全自动地
从互联网上采集数据。人们常用的搜索引擎就是一种爬虫,爬虫需要做的就是模拟
正常的网络请求,例如,在网站上点击一个网址,就是一次网络请求。
Python爬虫是用Python编程语言实现的网络爬虫,主要用于网络数据的爬取和处理。相比于
其他语言,Python是一门非常适合开发网络爬虫的编程语言,它具有大量内置包,可以轻松地实
现网络爬虫功能。
1.3爬虫的用途
Python爬虫可以做的事情很多,如搜索数据、采集数据、广告过滤等,还可以用于数据分析,
在数据的爬取方面作用非常大。下面通过一张图来总结网络爬虫的常用功能,如图1-1所示。
2
Python网咯爬虫实战.indd22022/2/1711:09:53
第1章网络爬虫概述
搜索引擎爬取图片
爬取用户公开联系网络爬取网站用户公开
方式,进行营销爬虫信息,进行分析
收集金融信息做
投资分析自动去除网页广告
…
图1-1爬虫的常用功能
(1)通过网络爬虫可以代替手工完成很多事情。例如,使用网络爬虫搜集金融领域的数据资
源,将金融经济的发展与相关数据进行集中处理,能够为金融领域的各个方面(如经济发展趋势、
金融投资、风险分析等)提供“数据平台”。
(2)浏览网页上的信息时,会看到上面有很多广告信息,十分扰人。这时,可以利用网络爬
虫将网页上的信息全部爬取下来,自动过滤掉这些广告,便于对信息的阅读。
(3)大数据时代,要进行数据分析,首先要有数据源,而学习爬虫,可以让人们获取更多的
数据源,并且这些数据源可以按人们的目的进行采集,去掉很多无关数据。
从某个网站中购买商品时,需要知道诸如畅销品牌、价格走势等信息。对于非网站管理员而言,
手动统计是一个很大的工程。这时,可以利用网络爬虫轻松地采集到这些数据,以便做出进一步的
分析。
(4)推销一些理财产品时,需要找到一些目标客户和他们的联系方式。这时,可以利用网络
爬虫设置对应的规则,自动从互联网中采集目标用户的联系方式等,以进行营销使用。
(5)从互联网中采集信息是一项重要的工作,如果单纯地靠人力进行信息采集,不仅低效烦琐,
而且消耗成本高。爬虫的出现在一定程度上代替了手工访问网页,实现自动化采集互联网的数据,
从而更高效地利用互联网中的有效信息。
1.4爬虫的组成
网络爬虫由控制节点、爬虫节点、资源库组成。网络爬虫中可以有多个控制节点,每个控制
节点下有多个爬虫节点,控制节点之间可以互相通信,同时,控制节点和其下的各爬虫节点之间
也可以进行相互通信,如图1-2所示。
(1)控制节点:也称为爬虫的中央控制器,主要负责根据URL地址分配线程,并调用爬虫节
点进行具体的爬行。
(2)爬虫节点:按照设置的算法,对网页进行具体的爬行,主要包括下载网页以及对网页的
文本进行处理,爬行后,会将对应的爬行结果存储到对应的资源库中。
3
Python网咯爬虫实战.indd32022/2/1711:09:53
Python网络爬虫实战
爬虫节点
爬虫节点
爬虫节点
爬虫节点爬虫节点控制节点控制节点
控制节点控制节点
爬虫节点
爬虫节点
爬虫节点爬虫节点
图1-2网络爬虫的控制节点和爬虫节点的结构关系
1.5爬虫的类型
通常可以按照不同的维度对网络爬虫进行分类,例如,按照使用场景,可将爬虫分为通用爬
虫和聚焦爬虫;按照爬取形式,可分为累积式爬虫和增量式爬虫;按照爬取数据的存在方式,可分
为表层爬虫和深层爬虫。在实际应用中,网络爬虫系统通常是这几类爬虫的组合体。
1.5.1通用爬虫
通用爬虫是搜索引擎爬取系统(如Baidu.、Google、Yahoo等)的重要组成部分,主要目的是
将互联网上的网页下载到本地,形成一个互联网内容的镜像备份。聚焦爬虫是“面向特定主题需求”
的一种网络爬虫程序。
通用网络爬虫又称全网爬虫(ScalableWebCrawler),爬行对象从一些种子URL扩充到整个
Web,主要为门户站点搜索引擎和大型Web服务提供商采集数据。由于商业原因,它们的技术
细节很少公布出来。这类网络爬虫的爬行范围和数量巨大,对于爬行速度和存储空间要求较高,
对于爬行页面的顺序要求相对较低,同时由于待刷新的页面太多,通常采用并行工作方式,但需
要较长时间才能刷新一次页面。通用网络爬虫适用于为搜索引擎搜索广泛的主题,有较强的应用
价值。
通用网络爬虫的结构大致可以分为页面爬行模块、页面分析模块、链接过滤模块、页面数据库、
URL队列、初始URL集合几部分。为了提高工作效率,通用网络爬虫会采取一定的爬行策略。常
用的爬行策略有深度优先策略、广度优先策略。
(1)深度优先策略:其基本方法是按照深度由低到高的顺序,依次访问下一级网页链接,直到
4
Python网咯爬虫实战.indd42022/2/1711:09:53
第1章网络爬虫概述
不能再深入为止。爬虫在完成一个爬行分支后返回到上一链接节点进一步搜索其他链接。当所有
链接遍历完后,爬行任务结束。这种策略比较适合垂直搜索或站内搜索,但爬行页面内容层次较深
的站点时会造成资源的巨大浪费。
(2)广度优先策略:此策略按照网页内容目录层次深浅来爬行页面,处于较浅目录层次的页面
首先被爬行。当同一层次中的页面爬行完毕后,爬虫再深入下一层继续爬行。这种策略能够有效
控制页面的爬行深度,避免遇到一个无穷深层分支时无法结束爬行的问题,实现方便,无须存储
大量中间节点,不足之处在于需要较长时间才能爬行到目录层次较深的页面。
1.5.2聚焦爬虫
聚焦爬虫又称主题网络爬虫,是指选择性地爬行那些与预先定义好的主题相关的页面的网
络爬虫。与通用爬虫相比,聚焦爬虫只需要爬行与主题相关的页面,从而极大地节省了硬件和网
络资源;保存的页面也由于数量少而更新快,可以很好地满足一些特定人群对特定领域信息的
需求。
聚焦网络爬虫和通用网络爬虫相比,增加了链接评价模块以及内容评价模块。聚焦爬虫爬行
策略实现的关键是评价页面内容和链接的重要性,不同的方法计算出的重要性不同,由此导致链
接的访问顺序也不同。
(1)基于内容评价的爬行策略:DeBra将文本相似度的计算方法引入到网络爬虫中,提出了
FishSearch算法,它将用户输入的查询词作为主题,包含查询词的页面被视为与主题相关,其局
限性在于无法评价页面与主题相关度的高低。Herseovic对FishSearch算法进行了改进,提出了
Sharksearch算法,利用空间向量模型计算页面与主题的相关度大小。
(2)基于链接结构评价的爬行策略:Web页面作为一种半结构化文档,包含很多结构信息,
可用来评价链接的重要性。PageRank算法最初用于搜索引擎信息检索中对查询结果进行排序,也
可用于评价链接的重要性,具体做法就是每次选择PageRank值较大页面中的链接来访问。另一
个利用Web结构评价链接价值的方法是HITS(Hyperlink-InducedTopicSearch,超文本敏感标题
搜索)方法,它通过计算每个已访问页面的Authority权重和Hub权重,并以此决定链接的访问
顺序。
(3)基于增强学习的爬行策略:Rennie和McCallum将增强学习引入聚焦爬虫,利用贝叶斯分
类器,根据整个网页文本和链接文本对超链接进行分类,为每个链接计算出重要性,从而决定链
接的访问顺序。
(4)基于语境图的爬行策略:Diligenti等人提出了一种通过建立语境图(ContextGraphs)学
习网页之间的相关度,训练一个机器学习系统,通过该系统可计算当前页面到相关Web页面的距
离,距离越近的页面中的链接优先访问。印度理工大学(IIT)和IBM研究中心的研究人员开发
了一个典型的聚焦网络爬虫。该爬虫对主题的定义既不是采用关键词也不是加权矢量,而是一组
具有相同主题的网页。它包含两个重要模块:一个是分类器,用来计算所爬行的页面与主题的相
关度,确定是否与主题相关;另一个是净化器,用来识别通过较少链接连接到大量相关页面的中
心页面。
5
Python网咯爬虫实战.indd52022/2/1711:09:53
Python网络爬虫实战
1.5.3累积式和增量式爬虫
1.累积式爬虫
累积式爬虫是指从某一个时间点开始,通过遍历的方式爬取系统所允许存储和处理的所有
网页。在理想的软硬件环境下,经过足够的运行时间,采用累积式爬取的策略可以保证爬取到
相当规模的网页集合。但由于Web数据的动态特性,集合中网页的被爬取时间点是不同的,页
面被更新的情况也不同,因此累积式爬取到的网页集合事实上并无法与真实环境中的网络数据
保持一致。
2.增量式爬虫
增量式爬虫是指在具有一定量规模的网络页面集合的基础上,采用更新数据的方式选取已有
集合中的过时网页进行爬取,以保证所爬取到的数据与真实网络数据足够接近。进行增量式爬取
的前提是,系统已经爬取了足够数量的网络页面,并具有这些页面被爬取的时间信息。
与周期性爬行和刷新页面的网络爬虫相比,增量式爬虫只会在需要时爬行新产生或发生更新
的页面,并不重新下载没有发生变化的页面,可有效减少数据下载量,及时更新已爬行的网页,
减少时间和空间上的耗费,但是增加了爬行算法的复杂度和实现难度。
面向实际应用环境的网络蜘蛛设计中,通常既包括累积式爬取,也包括增量式爬取。累积式
爬取一般用于数据集合的整体建立或大规模更新阶段;而增量式爬取则主要针对数据集合的日常维
护与即时更新。
1.5.4表层爬虫和深层爬虫
Web页面按存在方式可以分为表层网页和深层网页。针对这两种网页的爬虫分别叫作表层爬
虫和深层爬虫。
1.表层爬虫
爬取表层网页的爬虫叫作表层爬虫。表层网页是指传统搜索引擎可以索引,以超链接可以到
达的静态网页为主构成的Web页面。
2.深层爬虫
爬取深层网页的爬虫叫作深层爬虫。深层网页是那些大部分内容不能通过静态链接获取的、
隐藏在搜索表单后的,只有用户提交一些关键词才能获得的Web页面。例如,用户注册后内容才
可见的网页就属于深层网页。
在互联网中,深层网页的数量往往比表层网页的数量要多很多。
与表层网页相比,深层网页上的数据爬取更加困难,要采用一定的附加策略才能够自动爬取。
爬取深层页面,需要想办法自动填写好对应的表单,所以,深层网络爬虫最重要的部分即为
表单填写部分。
深层网络爬虫主要由URL列表、LVS列表(LVS指的是标签/数值集合,即填充表单的数
据源)、爬行控制器、解析器、LVS控制器、表单分析器、表单处理器、响应分析器等部分构成。
深层爬虫爬行过程中最重要的部分就是表单填写,包含两种类型:
(1)基于领域知识的表单填写:简单地说就是建立一个填写表单的关键词库,通过语义分析来
选取合适的关键词填写表单。
(2)基于网页结构分析的表单填写:此方法一般无领域知识或仅有有限的领域知识,将网页表
单表示成DOM树,从中提取表单各字段的值并自动地进行表单填写。
6
Python网咯爬虫实战.indd62022/2/1711:09:53
第2章
网页请求原理
与爬虫基础
在第1章中,我们对网络爬虫有了初步的认识。本章主要介绍爬虫实现原理,并结合网页浏
览的过程介绍基于HTTP请求的原理,以及HTTP抓包工具Fiddler。
2.1爬虫实现原理
在第1章中我们已经了解了爬虫分类。不同类型的网络爬
开始
虫,其实现原理也是不同的,但这些实现原理中,会存在很多共
性。本章将分别以两种典型的网络爬虫为例(即通用网络爬虫和
聚焦网络爬虫),讲解网络爬虫的实现原理。初始URL
2.1.1通用爬虫
通用爬虫从互联网中搜集网页、采集信息,采集的网页信息获取网页
可为搜索引擎建立索引提供支持,决定着整个引擎系统的内容是
否丰富,信息是否及时,因此其性能的优劣直接影响着搜索引擎
提取新的URL
的效果。放入URL队列
首先看一下通用网络爬虫的实现原理。通用爬虫爬取网页的
流程(见图2-1)简要概括如下:
N满足停止
(1)选取一部分种子URL,将这些URL放入待爬取的条件?
URL队列。Y
(2)取出待爬取的URL,解析DNS得到主机的IP,并下载结束
URL对应的网页,存储到已下载的网页库中,并且将这些URL
图2-1通用爬虫爬取网页的流程
放进已爬取的URL队列。
Python网咯爬虫实战.indd72022/2/1711:09:53
Python网络爬虫实战
(3)分析已爬取URL队列中的URL,并将URL放入待爬取的URL队列,从而进入下一个循环。
以上就是通用网络爬虫的实现过程与基本原理,接下来分析聚焦网络爬虫的基本原理及其实
现过程。
2.1.2聚焦爬虫
聚焦爬虫(又称为网页蜘蛛、网络机器人,在FOAF社区中经常称为网页追逐者),是“面
向特定主题需求”的一种网络爬虫程序,它与通用搜索引擎爬虫的区别在于:聚焦爬虫在实施
网页爬取时会对内容进行处理筛选,尽量保证只爬取与需求相关的网页信息。
(1)对爬取目标的描述或定义。
(2)对网页或数据的分析与过滤。
(3)对URL的搜索策略。
爬取目标的描述和定义是决定网页分析算法与URL搜索策略如何制订的基础。而网页分析算
法和候选URL排序算法是决定搜索引擎所提供的服务形式和爬虫网页爬取行为的关键所在。这两
部分的算法是紧密相关的。
2.2HTTP基础
视频2.2.1HTTP与HTTPS
在浏览网页时,通常会发现URL的开头有http或https,这就是访问资源需要
的协议类型。例如,在浏览天猫时会发现浏览器地址栏出现了如图2-2所示的URL
地址。我们还看到过ftp、sftp、file等其他的URL开头,它们也是协议类型。在爬
通信协议虫里面,所爬取的页面一般都是http或者https开头的协议,这里主要介绍这两个协议。
图2-2天猫地址
网站的URL分为两部分:通信协议和域名地址。域名地址很好理解,不同的域名地址表示网
站中不同的页面;而通信协议,简单来说就是浏览器和服务器之间沟通的语言。网站中的通信协
议一般就是HTTP协议和HTTPS协议。
HTTP(HyperTextTransferProtocol,超文本传输协议)是用于从网络传输超文本数据到本地
浏览器的协议,它能保证高效而准确地传送超文本文档。
一直以来HTTP协议都是最主流的网页协议,但是互联网发展到今天,HTTP协议的明文传输
会让用户存在一个非常大的安全隐患。试想一下,假如用户在一个HTTP协议的网站上面购物,
需要在页面上输入银行卡号和密码,然后把数据提交到服务器实现购买。如果这时候传输数据被
第三者截获了,由于HTTP明文数据传输的原因,用户的卡号和密码就会被截获者获得。从一定
程度上来说,HTTP协议是不安全的。
HTTPS(HyperTextTransferProtocoloverSecureSocketLayer,超文本传输安全协议)是以安
全为目标的HTTP通道,是HTTP的安全版,即HTTP下加入SSL层,简称为HTTPS。
8
Python网咯爬虫实战.indd82022/2/1711:09:53
第2章网页请求原理与爬虫基础
HTTPS协议可以理解为HTTP协议的升级,就是在HTTP的基础上增加了数据加密。在数据
进行传输之前,对数据进行加密,然后再发送到服务器。这样,就算数据被第三者所截获,但是
由于数据是加密的,所以个人信息是安全的。这就是HTTP和HTTPS的最大区别。
目前国内的很多大型互联网网站,如淘宝、京东、百度、腾讯等很早就已经把HTTP换成了
HTTPS。
数据加密传输,是HTTP和HTTPS之间的本质性区别,除此之外,HTTPS网站和HTTP网
站还有其他地方不同。
当使用Chrome浏览器访问一个HTTP网站时,仔细观察会发现浏览器对所访问的HTTP网站
会显示如图2-3所示的“不安全”的安全警告,提示用户当前所访问的网站可能会存在风险。而访
问HTTPS网站时,情况是完全不一样的。
图2-3安全警告
除了浏览器视觉上不同以外,HTTPS网站最重要的就是可以提升搜索排名。百度和谷歌已经
明确表示,HTTPS网站将会作为搜索排名的一个重要权重指标。也就是说,HTTPS网站比HTTP
网站在搜索排名中更有优势。
2.2.2HTTP请求过程
浏览器的主要功能是向服务器发出请求,并在窗口中显示选择的网络资源。HTTP是一套计算
机通过网络进行通信的规则,它由两部分组成:客户端请求消息和服务器端响应消息,通信过程如
图2-4所示。
请求
响应
客户机服务器
图2-4HTTP通信过程
这里的客户机代表PC或手机浏览器,服务器即是要访问的网站所在的服务器。
当用户在浏览器的地址栏中输入一个URL地址并按【Enter】键之后,浏览器会向HTTP服务
器发送HTTP请求。常用的HTTP请求包括GET和POST两种方式。
视频
2.2.3客户端请求
从图2-4可以看出,请求由客户机向服务器发出,根据HTTP协议的规定,客
户机发送一个HTTP请求到服务器的请求消息,由请求行、请求头部、空行以及请
求包体(数据)四部分组成。图2-5所示为请求消息的一般格式。客户端
9
Python网咯爬虫实战.indd92022/2/1711:09:53
Python网络爬虫实战
请求方法空格URL空格协议版本回车符换行符请求行
头部字段名称:(冒号)值回车符换行符
请求头部
…
头部字段名称:(冒号)值回车符换行符
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 税务局2025年度环境保护与治理合同
- 2025年度出口退税证明开具与跨境电商平台服务合同3篇
- 2024良乡校区物业管理服务合同
- 2025年度装载机租赁与施工技术指导合同3篇
- 二零二四年围栏产品研发与创新设计合同3篇
- 二零二五年度绿色通道不过户二手房买卖合同2篇
- 2025年度新能源发电项目变压器采购合同标准范本3篇
- 2024版跨国企业社会责任合规合同
- 二零二五版个人购房贷款担保与房屋维修基金代缴代理合同3篇
- 二零二五版股权代持实务解析与合规操作合同
- 割接方案的要点、难点及采取的相应措施
- 2025年副护士长竞聘演讲稿(3篇)
- 2025至2031年中国台式燃气灶行业投资前景及策略咨询研究报告
- 原发性肾病综合征护理
- (一模)株洲市2025届高三教学质量统一检测 英语试卷
- 第三章第一节《多变的天气》说课稿2023-2024学年人教版地理七年级上册
- 2025年中国电科集团春季招聘高频重点提升(共500题)附带答案详解
- 2025年度建筑施工现场安全管理合同2篇
- 建筑垃圾回收利用标准方案
- 2024年考研英语一阅读理解80篇解析
- 样板间合作协议
评论
0/150
提交评论