本书从实战角度系统讲解 Python爬虫的核心知识点,并通过大量的真实项目让读者熟练掌握 Python爬虫技术。本书用 20多个实战案例,完美演绎了使用各种技术编写 Python爬虫的方式,读者可以任意组合这些技术,完成很好复杂的爬虫应用。
全书共 20章,分为 5篇。第 1篇基础知识(第 1、2章),主要包括 Python运行环境的搭建、 HTTP基础、网页基础( HTML、CSS、JavaScript等)、爬虫的基本原理、 Session与 Cookie。第 2篇网络库(第 3~ 6章),主要包括网络库 urllib、urllib3、requests和 Twisted的核心使用方法,如发送 HTTP请求、处理超时、设置 HTTP请求头、搭建和使用代理、解析链接、 Robots协议等。第 3篇解析库(第 7~ 10章),主要包括 3个常用解析库( lxml、Beautiful Soup和 pyquery)的使用方法,同时介绍多种用于分析 HTML代码的技术,如正则表达式、 XPath、CSS选择器、方法选择器等。第 4篇数据存储(第 11、12章),主要包括 Python中数据存储的解决方案,如文件存储和数据库存储,其中数据库存储包括多种数据库,如本地数据库 SQLite、网络数据库 MySQL以及文档数据库 MongoDB。第 5篇爬虫不错应用(第 13~ 20章),主要包括 Python爬虫的一些不错技术,如抓取异步数据、 Selenium、Splash、抓取移动 App数据、 Appium、多线程爬虫、爬虫框架 Scrapy,很后给出一个综合的实战案例,综合了 Python爬虫、数据存储、 PyQt5、多线程、数据可视化、Web等多种技术实现一个可视化爬虫。
本书可以作为广大计算机软件技术开发者、互联网技术研究人员学习“爬虫技术”的参考用书。也可以作为高等院校计算机科学与技术、软件工程、人工智能等专业的教学参考用书。
李宁,欧瑞科技创始人,极客起源IT问答社区(https://geekori.com)创始人,欧瑞学院品牌讲师,计算机专业硕士。拥有近20年软件开发经验,10年企业内训经验。曾任靠前某大型软件公司项目经理。CSDN博客专家、CSDN学院签约讲师、51CTO学院特级讲师。长久以来一直从事JavaScript、Node.js、Java、Kotlin、Python、Android、iOS、C++、Hadoop、Spark、深度学习的开发和技术指导工作。对靠前外相关领域的技术、理论和实践有很深的理解和研究。目前已经出版超过30本IT畅销书,主要著作包括《Kotlin程序开发入门精要》《Android深度探索 卷1和卷2》《Android开发权wei指南 版和第2版》等。
前言
篇 基础知识
章 开发环境配置
1.1 安装官方的Python运行环境
1.2 配置PATH环境变量
1.3 安装Anaconda Python开发环境
1.4 安装PyCharm
1.5 配置PyCharm
1.6 小结
第2章 爬虫基础
2.1 HTTP基础
2.1.1 URI和URL
2.1.2 超文本
2.1.3 HTTP与HTTPS
2.1.4 HTTP的请求过程
2.1.5 请求
2.1.6 响应
2.2 网页基础
2.2.1 HTML
2.2.2 CSS
2.2.3 CSS选择器
2.2.4 JavaScript
2.3 爬虫的基本原理
2.3.1 爬虫的分类
2.3.2 爬虫抓取数据的方式和手段
2.4 Session与Cookie
2.4.1 静态页面和动态页面
2.4.2 无状态HTTP与Cookie
2.4.3 利用Session和Cookie保持状态
2.4.4 查看网站的Cookie
2.4.5 HTTP状态何时会失效
2.5 实战案例:抓取所有的网络资源
2.6 实战案例:抓取博客文章列表
2.7 小结
第2篇 网络库
第3章 网络库urllib
3.1 urllib简介
3.2 发送请求与获得响应
3.2.1 用urlopen函数发送HTTP GET请求
3.2.2 用ur。lopen函数发送HTTP POST请求
3.2.3 请求超时
3.2.4 设置HTTP请求头
3.2.5 设置中文HTTP请求头
3.2.6 请求基础验证页面
3.2.7 搭建代理与使用代理
3.2.8 读取和设置Cookie
3.3 异常处理
3.3.1 URLError
3.3.2 HTTPError
3.4 解析链接
3.4.1 拆分与合并URL(urlparse与urlunparse)
3.4.2 另一种拆分与合并URL的方式(urlsplit与urlunsplit)
3.4.3 连接URL(urlioin)
3.4.4 URL编码(urlencode)
3.4.5 编码与解码(quote与unquote)
3.4.6 参数转换(parse_qs与parse_qsl)
3.5 Robots协议
3.5.1 Robots协议简介
3.5.2 分析Robots协议
……
第3篇 解析库
第4篇 数据存储
第5篇 爬虫不错应用