搜索
高级检索
高级搜索
书       名 :
著       者 :
出  版  社 :
I  S  B  N:
出版时间 :
中公教育Python高效开发指南:Python网络爬虫综合开发
0.00     定价 ¥ 0.00
湖州市图书馆
此书还可采购4本,持证读者免费借回家
  • ISBN:
    9787536980556
  • 作      者:
    中公教育优就业研究院
  • 出 版 社 :
    陕西科学技术出版社
  • 出版日期:
    2021-07-01
收藏
编辑推荐
印刷批次不同,图书封面可能与实际展示有所区别,增值服务也可能会有所不同,以读者收到实物为准《中公版·Python高效开发指南:Python网络爬虫综合开发》体系科学,条理清晰,语言通俗易懂,讲解深入浅出,实战性强。本书立足于Python网络爬虫开发所需的基础知识,结合实际编程中所遇到的一些问题进行重点讲解,适用于Python网络爬虫开发初学者。另外,本书也适合作为通过Python网络爬虫开发进入Web全栈开发、数据分析和人工智能领域的入门教材。
本书采用双色印刷模式,图文并茂,并提供视频讲解等增值服务。在本书的重要章节提供讲师的讲解视频,扫描二维码即可实现在线学习,操作便捷高效,使读者在掌握Python网络爬虫开发相关知识的基础下,进一步加强实际操作的动手能力。
展开
内容介绍
《中公版·Python高效开发指南:Python网络爬虫综合开发》共分为十二章,涵盖了Python网络爬虫综合开发的相关知识,对重难点内容进行了针对性讲解。本书面向Python网络爬虫开发的初学者,按照由浅入深、循序渐进的规律,从讲解网络爬虫开发基础知识,到讲解如何开发单个.py文件的Python爬虫程序,后讲解基于Scrapy爬虫框架的网络爬虫开发。
● 网络爬虫概述(第一章)
介绍了网络爬虫的基础知识,包括定义、分类、原理和搜索策略等概念性内容。
● Python网络爬虫开发基础(第二章)
介绍了Python开发环境的搭建,重点介绍了PyCharm的使用。另外,还详细介绍了HTTP协议的相关知识,并介绍了HTML、JavaScript和XPath。
● 开发单个.py文件的爬虫程序(第三章、第四章)
介绍了如何开发单个.py文件的Python爬虫程序,该程序采用Request模块获取数据,并采用XPath、BeautifulSoup4和PyQuery模块进行解析。
● 开发Python网络爬虫相关技术(第五章至第十章)
介绍了Python网络爬虫开发中广泛应用的技术,包括正则表达式、数据接口、数据库的使用、表单的使用、模拟登录、反反爬虫方法和Selenium模拟浏览器等,并结合丰富的小案例来展示知识点。
● Scrapy爬虫框架(第十一章、第十二章)
介绍了基于Scrapy爬虫框架的爬虫开发和分布式爬虫框架scrapy-redis,以及爬虫的部署。
展开
精彩书摘
    第一章
    网络爬虫概述
    1.1网络爬虫的定义
    网络爬虫是一种按照一定的规则,自动地爬取万维网信息的程序或者脚本。网络爬虫又称网络蜘蛛(Web Spider),这是一个很形象的名字,如果将互联网看作一个蜘蛛网,那么爬虫就是在蜘蛛网上爬来爬去的蜘蛛。
    1.2网络爬虫的发展阶段
    到目前为止,网络爬虫大致可分为以下四个发展阶段。
    第一阶段:早期爬虫。在这一阶段,互联网基本是完全开放的,人类流量是主流,爬虫只是爬取简单的字段信息。
    第二阶段:分布式爬虫。随着互联网数据量的不断增大,爬虫需要设计成分布式架构,才能实现高效爬取。
    第三阶段:暗网爬虫。在这一阶段,互联网出现了很多新的业务,这些业务的数据之间链接很少,因此针对暗网的爬虫被设计出来。
    第四阶段:智能爬虫。在这一阶段,爬虫主要用于社交网络数据的爬取,需要应对各种各样的反爬虫技术。
    1.3网络爬虫的应用
    目前,网络爬虫的主要应用如图1-1所示,其中主要的应用有搜索引擎、数据分析、信息聚合、金融投资分析等。
    在这些应用中,如果没有网络爬虫爬取数据,那么再好的算法和模型也难以得到结果,并且没有数据进行机器学习建模,也无法形成能解决实际问题的模型。因此,在目前炙手可热的人工智能领域,网络爬虫越来越起到数据生产者的关键作用。
    图1-1网络爬虫的主要应用
    1.4网络爬虫的类型
    网络爬虫主要分为以下三种类型。
    (1)通用爬虫
    通用爬虫又称全网爬虫,目前是大型捜索引擎(如百度、搜狗、谷歌等)中内容爬取系统的重要组成部分。通用爬虫的主要目的是将互联网上的网页爬取到本地,形成一个互联网内容的副本,然后再处理形成标签索引,用户搜索时,就会返回搜索关键字与标签相关的网页。通用爬虫的爬取策略为深度优先搜索策略和广度优先搜索策略。
    (2)聚焦爬虫
    聚焦爬虫又称主题网络爬虫,是指选择性地爬取那些与预先定义好的主题相关网页的网络爬虫。
    (3)增量爬虫
    增量爬虫又称增量式网络爬虫,是指对已下载网页采取增量式更新,只爬取新产生的或者已经发生变化的网页的网络爬虫。增量爬虫能够在一定程度上保证爬取的网页尽可能是新的网页。
    上述三种网络爬虫的功能不同,使用方法也不同。例如,百度、谷歌搜索引擎是典型的增量爬虫,提供大而全的内容来满足世界各地用户的需求。随着爬虫使用越来越灵活,很多网站逐渐使用多个爬虫进行同步爬取。例如,很多视频网站都是先通过一般爬虫或者人工批量爬取内容,再提供给用户一些可选项,让用户自己给聚焦爬虫划定范围,后找到匹配度足够高的内容,整个过程极大地降低了资源和时间的消耗。
    1.5网络爬虫的原理
    网络爬虫是模拟用户在浏览器或者某个应用程序上的操作,并实现操作过程自动化的程序。
    简而言之,网络爬虫实质上是实现浏览器的功能,通过指定统一资源定位符(URL),直接返回给用户所需要的数据,而不需要人工去一步步操纵浏览器获取数据。
    网络爬虫的基本工作流程如下:
    ①选取一个初始URL,通常为网站首页的URL。
    ②将初始URL放入待爬取URL队列中。
    ③从待爬取URL队列中取出一个待爬取的URL,将该URL对应的网页下载下来,并存储到已下载网页库中。将这个URL放入已爬取URL集合中。
    ④分析已爬取URL集合中某一URL(假设该URL为A)对应的网页,获取其中的一个或全部其他URL(获取方式基于不同的搜索策略而定),设为数学意义上的集合B。循环判断B中每个URL是否属于已爬取URL集合或已检测URL集合。如果不属于,那么将B中该URL放入待爬取URL队列中;如果属于,那么判断B中下一个URL。上述循环结束后,判断A对应的网页中所有的URL是否都存在于已爬取URL集合中,若是,则将A从已爬取URL集合中删除,放入已检测URL集合中。
    ⑤判断待爬取URL队列是否为空,若不为空,则转入流程③;若为空,则结束爬取。
    需要注意的是,网络上的网页不是一直不变的,因此已检测URL集合中的网页在一段时间后有可能会发生变化。针对这个问题,需要每隔一段时间,将已检测URL集合中的所有URL恢复到已爬取URL集合中。
    1.6网络爬虫的搜索策略
    搜索引擎的网络爬虫工作方式是爬取整个网站,通常从网站首页开始爬取,然后从首页中获取本站其他网页的URL,根据这些URL爬取对应网页的内容。在爬取到的其他网页中再次获取没爬取过的网页的URL,然后通过这些URL爬取下一批网页。采用上述方式一直爬取下去,直到爬取完该网站的所有网页为止。
    如上所述,可将网络爬虫看作一个自动爬取网页的程序,它为搜索引擎从互联网上爬取网页信息,是搜索引擎的重要组成部分。
    在爬取网页时,网络爬虫一般有两种搜索策略,分别是深度优先搜索策略和广度优先搜索策略。
    1.6.1深度优先搜索策略
    采用深度优先搜索策略爬取网页的过程:选取一个初始网页的URL作为当前URL,爬取当前URL对应的网页,并获取其中的其他URL,从中选择任意一个未爬取的URL作为当前URL,继续向下爬取。若当前URL对应的网页中没有未爬取的URL,则回溯,将前一个爬取网页的URL作为当前URL,继续向下爬取,直到所有URL对应的网页都被爬取为止。
    例如,采用深度优先搜索策略爬取如图1-2所示的网站。
    图1-2采用深度优先搜索策略爬取的网站
    在图1-2中,每一个圆圈代表一个网页,分别用字母A~I命名,各个网页的优先级相同,网页之间采用箭头连接,箭头指向的一端是目标网页,另一端是源网页,箭头连接表明源网页中包含目标网页的URL。
    选取A作为初始网页,将A的URL作为当前URL,爬取A,从A中获取了B、C、D、E、F的URL。选择B的URL作为当前URL,爬取B,爬完后,由于B中没有获取URL,因此回溯到上一个A,搜索A中未爬取的URL,选择C的URL作为当前URL,爬取C。与B同理,接着爬取D和E。爬完E后,从E中获取了H的URL,于是爬取H。爬完H后,从H中获取了I的URL,于是爬取I,爬完后,由于I中没有获取URL,因此不断回溯直到A,搜索A中未爬取的URL,此时只剩F的URL未爬取,将F的URL作为当前URL,爬取F,从F中获取了G的URL,于是爬取G,爬完后,由于G中没有获取URL,因此不断回溯直到A,此时A中没有未爬取的URL,整个爬取过程结束。
    1.6.2广度优先搜索策略
    采用广度优先搜索策略爬取网页的过程:选取一个初始网页的URL作为当前URL,爬取当前URL对应的网页,并获取其中的所有未爬取URL,放入待爬取URL队列,依次爬取上述所有未爬取的URL,每次爬取都将当前URL置为正在爬取的URL。若当前URL对应的网页中没有未爬取的URL,则将待爬取队列中的队头URL作为当前URL,继续向下爬取,直到所有URL对应的网页都被爬取为止。广度优先搜索策略是爬虫常用的方式,因为这种方式可以让网络爬虫并行处理,提高爬取速度。
    例如,采用广度优先搜索策略爬取如图1-3所示的网站。
    图1-3采用广度优先搜索策略爬取的网站
    在图1-3中,每一个圆圈代表一个网页,分别用字母A~I命名,各个网页的优先级相同,网页之间采用箭头连接,箭头指向的一端是目标网页,另一端是源网页,箭头连接表明源网页中包含目标网页的URL。
    选取A作为初始网页,将A的URL作为当前URL,爬取A,从A中获取了B、C、D的URL,于是分别爬取B、C、D,每次爬取都分别将B、C、D中的未爬取URL放入待爬取URL队列中,全部爬取完后,A中已没有未爬取的URL。待爬取URL队列中的第一个元素为E,把E的URL作为当前URL,爬取E。E中已没有未爬取的URL,接着爬取待爬取队列中的F,然后依次爬取G、H、I,整个爬取过程结束。
    这个爬取顺序验证了爬虫是逐层进行爬取的,只有在完成上一层的爬取之后,才会爬取下一层,这就是广度优先策略爬取的过程。
    1.7反爬虫技术及解决方案
    1.7.1通过User-Agent来反爬虫
    无论是浏览器,还是爬虫程序,在向服务器发起网络请求时,都会发过去一个头文件。某网页的Request Headers如图1-4所示。
    图1-4某网页的Request Headers
    在Request Headers中,大多数字段都是浏览器向服务器“表明身份”用的。对于爬虫程序而言,需要注意的字段是User-Agent。很多网站都会建立User-Agent白名单,只有属于白名单的User-Agent才能够正常访问。例如,爬虫爬取某些网站,如果采用Requests模块的get()方法发送GET请求时没有添加User-Agent参数,那么会返回错误信息。
    应对这种反爬虫技术,可以通过在Requests模块的get()方法中设置User-Agent参数,或使用User-Agent池来解决。
    1.7.2通过IP限制来反爬虫
    网络爬虫一般对服务器是有害的,因此服务器管理员会设置一些保护程序,该程序一旦发现某个IP在短时间内频繁访问同一个网页,就会封禁这个IP,爬虫程序再请求就会直接跳转到异常提示页面,从而无法爬取正常网页的数据。
    应对这种反爬虫技术,可以通过代理IP池来解决。通过代理IP,从不同的IP进行访问,这样就不会被封禁IP了。可是代理IP的获取是一件很麻烦的事情,网上有免费的和付费的,质量参差不齐。如果企业需要,那么可以通过购买云服务来自建代理IP池。
    另外一种应对IP限制的解决方案是降低爬虫的采集速率,使HTTP请求速率略低于阈值,不触动网站的封禁IP程序。这种解决方案是以牺牲爬虫的工作效率为代价的。
    1.7.3通过JavaScript脚本来反爬虫
    网络爬虫毕竟只是人为编写的一段程序,它并不能像人类一样去应对各种变化,如验证码、滑动解锁等。例如,要爬取某个网站,在进入网站之前,会有一个验证页面来验证操作者是否为机器。对于这种验证方法,可以通过JavaScript代码生成一串随机数字,然后要求浏览器通过JavaScript的运算求出这一串数字的和,后返回给服务器。然而这样一个简单且基础的验证步骤却是爬虫程序无法完成的。
    应对这种反爬虫技术,一般要使用Selenium的WebDriver(如PhantomJS)来解决。PhantomJS在Windows中是一个.exe文件,它可以在没有图形界面的情况下完全模拟一个浏览器,因此可以轻松应对JavaScript脚本反爬虫技术。
    1.7.4通过robots.txt来反爬虫
    robots.txt是一种存放于网站根目录下的ASCII编码的文本文件,通常用于告知网络搜索引擎的网络爬虫,此网站中的哪些内容是不可以被网络
展开
目录
第一章网络爬虫概述1
1.1网络爬虫的定义1
1.2网络爬虫的发展阶段1
1.3网络爬虫的应用1
1.4网络爬虫的类型2
1.5网络爬虫的原理3
1.6网络爬虫的搜索策略3
1.6.1深度优先搜索策略4
1.6.2广度优先搜索策略4
1.7反爬虫技术及解决方案5
1.7.1通过User-Agent来反爬虫5
1.7.2通过IP限制来反爬虫6
1.7.3通过JavaScript脚本来反爬虫7
1.7.4通过robots.txt来反爬虫7
第二章爬虫开发基础8
2.1Python的安装和运行8
2.1.1Python的安装8
2.1.2编写第一个Python程序12
2.2PyCharm开发工具的安装和使用12
2.3HTTP18
2.3.1URI和URL18
2.3.2HTTP和HTTPS18
2.3.3HTTP请求报文18
2.3.4HTTP请求过程20
2.3.5HTTP请求方法21
2.3.6HTTP响应报文21
2.4HTTP会话和Cookies23
2.4.1静态网页和动态网页23
2.4.2HTTP会话23
2.4.3Cookies24
2.5HTTP代理服务器24
2.5.1HTTP代理服务器的基本原理24
2.5.2HTTP代理服务器的主要功能25
2.6HTML25
2.6.1HTML概述25
2.6.2HTML基础知识26
2.6.3HTML常用标签28
2.7HTMLDOM37
2.8JavaScript39
2.8.1JS的使用39
2.8.2JS变量40
2.8.3JS变量的命名规则40
2.8.4JS变量的数据类型40
2.8.5JS对象41
2.8.6JS函数41
2.8.7JS运算符41
2.8.8JS条件语句42
2.8.9JS循环语句43
2.8.10break语句和continue语句45
2.9JSON45
2.9.1JSON数据结构45
2.9.2JSON数据类型46
2.9.3JSON与XML的比较46
2.10AJAX48
2.11XPath48
2.11.1XPath选取节点48
2.11.2XPath谓语49
2.11.3XPath通配符49
2.11.4XPath多路径选择50
2.11.5XPath轴50
2.11.6XPath运算符51
2.11.7XPath常用的功能函数52
第三章使用开发者工具分析网站53
3.1开发者工具53
3.2元素(Elements)面板54
3.3网络(Network)面板55
3.4Chrome插件59
第四章HTML内容爬取与解析62
4.1爬虫的开发思路62
4.2Requests模块概述及其安装65
4.3Requests基本请求方式67
4.4复杂的Requests请求方式70
4.5Requests上传与下载74
4.6lxml模块的安装与使用方法76
4.6.1lxml模块的安装76
4.6.2lxml模块的使用77
4.7BeautifulSoup4模块88
4.7.1BeautifulSoup4模块的安装88
4.7.2解析器89
4.7.3按照标准的缩进格式输出HTML89
4.7.4处理HTMLDOM节点91
4.7.5遍历Tag的子孙节点97
4.7.6获取Tag的文本内容101
4.7.7根据Tags间的关系获取节点105
4.7.8find_all()方法name参数的使用109
4.7.9find_all()方法其他参数的使用115
4.7.10搜索HTMLDOM树的其他方法123
4.7.11采用CSS选择器查找元素124
4.8PyQuery模块132
4.8.1PyQuery模块的安装132
4.8.2PyQuery模块语法讲解132
4.9TXT文件的读/写操作136
4.9.1TXT文件的读取136
4.9.2TXT文件的写入138
4.10CSV文件的读/写操作139
4.10.1CSV文件概述139
4.10.2CSV文件的读取140
4.10.3CSV文件的写入142
第五章正则表达式144
5.1正则表达式常用符号144
5.1.1正则表达式的定义144
5.1.2普通字符144
5.1.3预定义字符145
5.1.4量词字符147
5.1.5边界匹配字符150
5.1.6分组匹配字符152
5.2re模块及其功能函数153
5.2.1search()函数153
5.2.2sub()函数155
5.2.3findall()函数156
5.2.4re模块修饰符157
5.3综合案例——爬取某电影网站的榜单157
5.3.1爬虫思路分析157
5.3.2爬虫程序及分析158
第六章数据接口信息爬取161
6.1数据接口概述161
6.2API的使用161
6.2.1API概述161
6.2.2API样例161
6.3解析XHR接口165
6.3.1JSON解析库165
6.3.2某招聘网站数据接口分析167
6.4综合案例——爬取某网站新闻中的图片172
6.4.1图片爬取方法172
6.4.2爬虫思路分析173
6.4.3爬虫程序及分析177
第七章数据库存储180
7.1MySQL数据库180
7.1.1关系型数据库概述180
7.1.2MySQL的安装182
7.1.3SQL概述187
7.1.4MySQL的数据类型187
7.1.5数据定义语言(DDL)及常用操作189
7.1.6数据操纵语言(DML)193
7.1.7数据查询语言(DQL)195
7.1.8pyMySQL模块的使用203
7.2MongoDB数据库206
7.2.1NoSQL数据库概述206
7.2.2MongoDB的安装206
7.2.3MongoDB的数据类型213
7.2.4MongoDB数据库操作214
7.2.5MongoDB集合操作215
7.2.6MongoDB文档操作216
7.2.7pymongo模块的使用222
7.3Redis数据库226
7.3.1内存数据库概述226
7.3.2典型Redis数据类型的操作226
7.3.3Redis模块的使用234
7.4综合案例1——爬取某网站的微客数据235
7.4.1爬虫思路分析235
7.4.2爬虫程序及分析237
7.5综合案例2——爬取某网站的房源数据241
7.5.1爬虫思路分析241
7.5.2爬虫程序及分析244
第八章表单交互与模拟登录249
8.1表单交互249
8.1.1POST请求249
8.1.2PythonRequests提交表单249
8.2模拟登录254
8.2.1Cookies概述254
8.2.2提交Cookies模拟登录254
8.3综合案例——爬取某招聘网站的招聘信息257
8.3.1爬虫思路分析257
8.3.2爬虫程序及分析259
第九章反爬虫技术以及应对方法262
9.1常见的反爬虫技术262
9.2基于请求头的反爬虫技术以及应对方法262
9.3基于用户行为的反爬虫技术以及应对方法264
9.4基于Cookies的反爬虫技术以及应对方法266
9.5基于验证码的反爬虫技术以及应对方法267
第十章Selenium模拟浏览器271
10.1Selenium概述271
10.1.1Selenium的介绍和安装271
10.1.2浏览器的选择和安装271
10.2Selenium的使用274
10.2.1模拟浏览器简单操作274
10.2.2SeleniumDriver操作276
10.2.3SeleniumWebelement操作277
10.2.4SeleniumActionChains278
10.2.5SeleniumWait279
10.2.6SeleniumExpectedConditions280
10.2.7模拟登录282
10.2.8破解滑块验证码283
10.3综合案例1——爬取某交友软件的好友空间信息288
10.3.1爬虫思路分析288
10.3.2爬虫程序及分析291
10.4综合案例2——爬取某电商网站的商品信息292
10.4.1爬虫思路分析292
10.4.2爬虫程序及分析294
第十一章Scrapy爬虫框架300
11.1Scrapy的安装和使用300
11.1.1Scrapy爬虫框架的架构300
11.1.2安装Scrapy301
11.1.3创建Scrapy爬虫项目304
11.1.4Scrapy文件介绍306
11.1.5编写Scrapy爬虫程序309
11.1.6运行Scrapy爬虫311
11.1.7ItemPipeline的用法313
11.1.8下载中间件的用法315
11.1.9Scrapy对接Selenium319
11.2综合案例1——爬取某房地产网站326
11.2.1爬虫思路分析326
11.2.2爬虫程序及分析329
11.3综合案例2——爬取某书评网站335
11.3.1爬虫思路分析335
11.3.2爬虫程序及分析338
第十二章分布式爬虫以及爬虫的部署345
12.1分布式爬虫原理345
12.1.1分布式爬虫架构345
12.1.2维护爬取队列346
12.1.3去重操作346
12.1.4防止中断348
12.2基于scrapy-redis的分布式爬虫348
12.2.1scrapy-redis架构349
12.2.2安装scrapy-redis349
12.2.3scrapy-redis常用配置350
12.2.4scrapy-redis简单实例350
12.3Scrapyd部署爬虫351
12.4Scrapyd-Client的使用353
展开
加入书架成功!
收藏图书成功!
我知道了(3)
发表书评
读者登录

温馨提示:请使用湖州市图书馆的读者帐号和密码进行登录

点击获取验证码
登录