项目1 爬取学生信息 1
1.1 爬虫程序开发环境 2
1.1.1 爬虫程序简介 2
1.1.2 Python开发环境搭建 2
1.2 Flask Web网站 3
1.2.1 Flask简介 3
1.2.2 Urllib程序包访问Web网站 6
1.3 GET方法访问网站 7
1.3.1 客户端GET方式发送数据 7
1.3.2 服务器获取GET发送的数据 7
1.4 POST方法向网站发送数据 9
1.4.1 客户端POST发送数据 9
1.4.2 服务器获取POST的数据 10
1.4.3 GET与POST的混合使用 10
1.5 Web下载文件 12
1.5.1 服务器程序 12
1.5.2 客户端程序 13
1.6 Web上传文件 14
1.6.1 上传二进制数据 15
1.6.2 服务器程序 15
1.6.3 客户端程序 16
1.7 Web学生管理程序 17
1.7.1 定义通讯协议 17
1.7.2 服务器程序 17
1.7.3 客户端程序 20
1.8 正则表达式 24
1.8.1 正则表达式规则 24
1.8.2 查找匹配字符串 28
1.9 实践项目——爬取学生信息 29
1.9.1 项目简介 29
1.9.2 服务器程序 30
1.9.3 客户端程序 31
练习一 35
项目2 爬取天气预报数据 37
2.1 HTML文档结构与文档树 38
2.1.1 HTML文档结构 38
2.1.2 HTML文档树 39
2.2 BeautifulSoup装载HTML文档 39
2.2.1 BeautifulSoup的安装 39
2.2.2 BeautifulSoup装载HTML文档 39
2.3 BeautifulSoup查找文档元素 43
2.3.1 查找HTML元素 43
2.3.2 获取元素的属性值 47
2.3.3 获取元素包含的文本值 47
2.3.4 高级查找 49
2.4 BeautifulSoup遍历文档元素 51
2.4.1 获取元素结点的父结点 51
2.4.2 获取元素结点的直接子元素结点 52
2.4.3 获取元素结点的所有子孙元素结点 53
2.4.4 获取元素结点的兄弟结点 53
2.5 BeautifulSoup使用CSS语法查找元素 54
2.5.1 使用CSS语法 54
2.5.2 属性的语法规则 56
2.5.3 Select查找子孙结点 56
2.5.4 Select查找直接子结点 57
2.5.5 Select查找兄弟结点 57
2.6 实践项目——爬取天气预报数据 58
2.6.1 项目简介 58
2.6.2 HTML代码分析 59
2.6.3 爬取天气预报数据 62
2.6.4 爬取与存储天气预报数据 63
练习二 66
项目3 爬取网站图像文件 69
3.1 网站树的爬取路径 70
3.1.1 Web服务器网站 70
3.1.2 递归程序爬取数据 72
3.1.3 深度优先爬取数据 73
3.1.4 广度优先爬取数据 75
3.2 网站图的爬取路径 76
3.2.1 复杂的Web网站 76
3.2.2 改进深度优先客户端程序 77
3.2.3 改进广度优先客户端程序 80
3.3 Python实现多线程 81
3.3.1 Python的前后台线程 82
3.3.2 线程的等待 84
3.3.3 多线程与资源 85
3.4 爬取网站复杂数据 88
3.4.1 Web服务器网站 88
3.4.2 爬取网站的复杂数据 89
3.4.3 爬取程序的改进 91
3.5 实践项目——爬取网站的图像文件 94
3.5.1 项目简介 94
3.5.2 单线程爬取图像的程序 94
3.5.3 多线程爬取图像的程序 96
练习三 98
项目4 爬取网站图书数据 99
4.1 Scrapy框架爬虫简介 100
4.1.1 安装Scrapy框架 100
4.1.2 建立Scrapy项目 100
4.1.3 入口函数与入口地址 103
4.1.4 Python的yield语句 103
4.2 Scrapy中查找HTML元素 104
4.2.1 Scrapy的Xpath简介 104
4.2.2 Xpath查找HTML元素 106
4.3 Scrapy爬取与存储数据 117
4.3.1 建立Web网站 117
4.3.2 编写数据项目类 118
4.3.3 编写爬虫程序MySpider 119
4.3.4 编写数据管道处理类 120
4.3.5 设置Scrapy的配置文件 121
4.4 Scrapy爬取网站数据 121
4.4.1 建立Web网站 121
4.4.2 编写Scrapy爬虫程序 123
4.5 实践项目——爬取当当网站图书数据 125
4.5.1 网站图书数据分析 125
4.5.2 网站图书数据提取 128
4.5.3 网站图书数据爬取 131
练习四 135
结语 138
参考文献 139