前言
第1章 网络爬虫入门
1.1 为什么要学网络爬虫
1.1.1 网络爬虫能带来什么好处
1.1.2 能从网络上爬取什么数据
1.1.3 应不应该学爬虫
1.2 网络爬虫是否合法
1.2.1 Robots协议
1.2.2 网络爬虫的约束
1.3 网络爬虫的基本议题
1.3.1 Python爬虫的流程
1.3.2 三个流程的技术实现
第2章 编写第一个网络爬虫
2.1 搭建Python平台
2.1.1 Python的安装
2.1.2 使用pip安装第三方库
2.1.3 使用编辑器Jupyter编程
2.1.4 使用编辑器Pycharm编程
2.2 Python使用入门
2.2.1 基本命令
2.2.2 数据类型
2.2.3 条件语句和循环语句
2.2.4 函数
2.2.5 面向对象编程
2.2.6 错误处理
2.3 编写第一个简单的爬虫
2.3.1 第一步:获取页面
2.3.2 第二步:提取需要的数据
2.3.3 第三步:存储数据
2.4 Python实践:基础巩固
2.4.1 Python基础试题
2.4.2 参考答案
2.4.3 自我实践题
第3章 静态网页抓取
3.1 安装Requests
3.2 获取响应内容
3.3 定制Requests
3.3.1 传递URL参数
3.3.2 定制请求头
3.3.3 发送POST请求
3.3.4 超时
3.4 Requests爬虫实践:TOP250电影数据
3.4.1 网站分析
3.4.2 项目实践
3.4.3 自我实践题
第4章 动态网页抓取
4.1 动态抓取的实例
4.2 解析真实地址抓取
4.3 通过Selenium模拟浏览器抓取
4.3.1 Selenium的安装与基本介绍
4.3.2 Selenium的实践案例
4.3.3 Selenium获取文章的所有评论
4.3.4 Selenium的高级操作
4.4 Selenium爬虫实践:深圳短租数据
4.4.1 网站分析
4.4.2 项目实践
4.4.3 自我实践题
第5章 解析网页
5.1 使用正则表达式解析网页
5.1.1 re.match方法
5.1.2 re.search方法
5.1.3 re.findall方法
5.2 使用BeautifulSoup解析网页
5.2.1 BeautifulSoup的安装
5.2.2 使用BeautifulSoup获取博客标题
5.2.3 BeautifulSoup的其他功能
5.3 使用lxml解析网页
5.3.1 lxml的安装
5.3.2 使用lxml获取博客标题
5.3.3 XPath的选取方法
5.4 总结
5.5 BeautifulSoup爬虫实践:房屋价格数据
5.5.1 网站分析
5.5.2 项目实践
5.5.3 自我实践题
第6章 数据存储
6.1 基本存储:存储至TXT或CSV
6.1.1 把数据存储至TXT
6.1.2 把数据存储至CSV
6.2 存储至MySQL数据库
6.2.1 下载安装MySQL
6.2.2 MySQL的基本操作
6.2.3 Python操作MySQL数据库
6.3 存储至MongoDB数据库
6.3.1 下载安装MongoDB
6.3.2 MongoDB的基本概念
6.3.3 Python操作MongoDB数据库
6.3.4 RoboMongo的安装与使用
6.4 总结
6.5 MongoDB爬虫实践:虎扑论坛
6.5.1 网站分析
6.5.2 项目实践
6.5.3 自我实践题
第7章 Scrapy框架
7.1 Scrapy是什么
7.1.1 Scrapy架构
7.1.2 Scrapy数据流(Data Flow)
7.1.3 选择Scrapy还是Requests+bs4
7.2 安装Scrapy
7.3 通过Scrapy抓取博客
7.3.1 创建一个Scrapy项目
7.3.2 获取博客网页并保存
7.3.3 提取博客标题和链接数据
7.3.4 存储博客标题和链接数据
7.3.5 获取文章内容
7.3.6 Scrapy的设置文件
7.4 Scrapy爬虫实践:财经新闻数据
7.4.1 网站分析
7.4.2 项目实践
7.4.3 自我实践题
第8章 提升爬虫的速度
8.1 并发和并行,同步和异步
8.1.1 并发和并行
8.1.2 同步和异步
8.2 多线程爬虫
8.2.1 简单的单线程爬虫
8.2.2 学习Python多线程
8.2.3 简单的多线程爬虫
8.2.4 使用Queue的多线程爬虫
8.3 多进程爬虫
8.3.1 使用multiprocessing的多进程爬虫
8.3.2 使用Pool+Queue的多进程爬虫
8.4 多协程爬虫
8.5 总结
第9章 反爬虫问题
9.1 为什么会被反爬虫
9.2 反爬虫的方式有哪些
9.2.1 不返回网页
9.2.2 返回非目标网页
9.2.3 获取数据变难
9.3 如何“反反爬虫”
9.3.1 修改请求头
9.3.2 修改爬虫的间隔时间
9.3.3 使用代理
9.3.4 更换IP地址
9.3.5 登录获取数据
9.4 总结
第10章 解决中文乱码
10.1 什么是字符编码
10.2 Python的字符编码
10.3 解决中文编码问题
10.3.1 问题1:获取网站的中文显示乱码
10.3.2 问题2:非法字符抛出异常
10.3.3 问题3:网页使用gzip压缩
10.3.4 问题4:读写文件的中文乱码
10.4 总结
第11章 登录与验证码处理
11.1 处理登录表单
11.1.1 处理登录表单
11.1.2 处理cookies,让网页记住你的登录
11.1.3 完整的登录代码
11.2 验证码的处理
11.2.1 如何使用验证码验证
11.2.2 人工方法处理验证码
11.2.3 OCR处理验证码
11.3 总结
第12章 服务器采集
12.1 为什么使用服务器采集
12.1.1 大规模爬虫的需要
12.1.2 防止IP地址被封杀
12.2 使用动态IP拨号服务器
12.2.1 购买拨号服务器
12.2.2 登录服务器
12.2.3 使用Python更换IP
12.2.4 结合爬虫和更换IP功能
12.3 使用Tor代理服务器
12.3.1 Tor的安装
12.3.2 Tor的使用
第13章 分布式爬虫
13.1 安装Redis
13.2 修改Redis配置
13.2.1 修改Redis密码
13.2.2 让Redis服务器被远程访问
13.2.3 使用Redis Desktop Manager管理
13.3 Redis分布式爬虫实践
13.3.1 安装Redis库
13.3.2 加入任务队列
13.3.3 读取任务队列并下载图片
13.3.4 分布式爬虫代码
13.4 总结
第14章 爬虫实践一:维基百科
14.1 项目描述
14.1.1 项目目标
14.1.2 项目描述
14.1.3 深度优先和广度优先
14.2 网站分析
14.3 项目实施:深度优先的递归爬虫
14.4 项目进阶:广度优先的多线程爬虫
14.5 总结
第15章 爬虫实践二:知乎Live
15.1 项目描述
15.2 网站分析
15.3 项目实施
15.3.1 获取所有Live
15.3.2 获取Live的听众
15.4 总结
第16章 爬虫实践三:百度地图API
16.1 项目描述
16.2 获取API秘钥
16.3 项目实施
16.3.1 获取所有拥有公园的城市
16.3.2 获取所有城市的公园数据
16.3.3 获取所有公园的详细信息
16.4 总结
第17章 爬虫实践四:畅销书籍
17.1 项目描述
17.2 网站分析
17.3 项目实施
17.3.1 获取亚马逊的图书销售榜列表
17.3.2 获取所有分类的销售榜
17.3.3 获取图书的评论
17.4 总结
· · · · · · (
收起)