首页 >> 全栈工程 >>Python >>Python教程 >> Python爬虫的流程是怎样的?来这一看就明了
详细内容

Python爬虫的流程是怎样的?来这一看就明了

时间:2020-04-14     【转载】   阅读

    对于网络爬虫技术的学习,其他教学很少有从整体结构来说的,多数是直接放出某部分代码。这样的方法会使初学者摸不着头脑:就好像是盲人摸象,有人摸到的是象腿,以为是一根大柱子;有人摸到的是大象耳朵,以为是一把大蒲扇等。


因此,在《Python网络爬虫从入门到实践(第2版)》这本书里对此就作出了解释。

2020021117483224.png

在开始第一个爬虫之前,先从宏观角度出发说清楚两个问题:


Python爬虫的流程是怎样的?

- 三个流程的技术实现是什么?

值得说明的是,本书选择了Python 3作为开发语言,现在Python最新版为Python 3.7。熟悉Python 2的读者可以在本书代码的基础上稍加改动,用Python 2运行。值得注意的是,Python 2即将在2020年1月1日停止支持,因此建议初学者直接安装Python 3进行学习。


由于本书的潜在读者多数使用Windows操作系统,因此本书大部分实例都是基于Windows编写和运行的。如果使用的是Linux和Mac OS操作系统,在搭建好Python平台之后也可以直接运行本书中的代码。


Python爬虫的流程

网络爬虫的流程其实非常简单,主要可以分为三部分:(1)获取网页;(2)解析网页(提取数据);(3)存储数据。

20200211174528602.png



(1)获取网页就是给一个网址发送请求,该网址会返回整个网页的数据。类似于在浏览器中键入网址并按回车键,然后可以看到网站的整个页面。


(2)解析网页就是从整个网页的数据中提取想要的数据。类似于你在页面中想找到产品的价格,价格就是你要提取的数据。


(3)存储数据也很容易理解,就是把数据存储下来。我们可以存储在csv中,也可以存储在数据库中。


三个流程的技术实现

下面列出三个流程的技术实现,括号里是对应的章节。


1.获取网页


获取网页的基础技术:requests、urllib和selenium(3&4)。


获取网页的进阶技术:多进程多线程抓取(8)、登录抓取(12)、突破IP封禁(9)和使用服务器抓取(12)。


2.解析网页


解析网页的基础技术:re正则表达式、BeautifulSoup和lxml(5)。


解析网页的进阶技术:解决中文乱码(10)。


3.存储数据


存储数据的基础技术:存入txt文件和存入csv文件(6)。

存储数据的进阶技术:存入MySQL数据库和MongoDB数据库(6)。


除此之外,第7章介绍Scrapy爬虫框架,第13章也会介绍分布式爬虫。


本书的使用方法:第1章到第7章是网络爬虫的基础,建议大家按顺序读;第8章到第13章是进阶部分,大家可以选择自己感兴趣的内容跳跃阅读。之后可以阅读第14章到第17章,通过项目实践消化和吸收Python爬虫的知识。


如果对于上述技术不熟悉的读者也不必担心,本书将会对其中的技术进行讲解,力求做到深入浅出。更多内容可到《Python网络爬虫从入门到实践(第2版)》这本书里查看哦


目录

前言

第1章 网络爬虫入门1

1.1 为什么要学网络爬虫2

1.1.1 网络爬虫能带来什么好处2

1.1.2 能从网络上爬取什么数据3

1.1.3 应不应该学爬虫3

1.2 网络爬虫是否合法3

1.2.1 Robots协议4

1.2.2 网络爬虫的约束5

1.3 网络爬虫的基本议题6

1.3.1 Python爬虫的流程7

1.3.2 三个流程的技术实现7

第2章 编写第一个网络爬虫9

2.1 搭建Python平台10

2.1.1 Python的安装10

2.1.2 使用pip安装第三方库12

2.1.3 使用编辑器Jupyter 编程13

2.1.4 使用编辑器Pycharm编程15

2.2 Python 使用入门18

2.2.1 基本命令18

2.2.2 数据类型19

2.2.3 条件语句和循环语句21

2.2.4 函数23

2.2.5 面向对象编程24

2.2.6 错误处理28

2.3 编写第一个简单的爬虫29

2.3.1 第一步:获取页面29

2.3.2 第二步:提取需要的数据30

2.3.3 第三步:存储数据32

2.4 Python实践:基础巩固33

2.4.1 Python基础试题34

2.4.2 参考答案35

2.4.3 自我实践题38

第3章 静态网页抓取39

3.1 安装Requests40

3.2 获取响应内容40

3.3 定制Requests41

3.3.1 传递URL参数41

3.3.2 定制请求头42

3.3.3 发送POST请求43

3.3.4 超时44

3.4 Requests爬虫实践:TOP250电影数据44

3.4.1 网站分析45

3.4.2 项目实践45

3.4.3 自我实践题47

第4章 动态网页抓取48

4.1 动态抓取的实例49

4.2 解析真实地址抓取50

4.3 通过Selenium模拟浏览器抓取55

4.3.1 Selenium的安装与基本介绍55

4.3.2 Selenium的实践案例57

4.3.3 Selenium获取文章的所有评论58

4.3.4 Selenium的高级操作61

4.4 Selenium爬虫实践:深圳短租数据64

4.4.1 网站分析64

4.4.2 项目实践66

4.4.3 自我实践题69

第5章 解析网页70

5.1 使用正则表达式解析网页71

5.1.1 re.match方法71

5.1.2 re.search方法74

5.1.3 re.findall方法74

5.2 使用BeautifulSoup解析网页76

5.2.1 BeautifulSoup的安装76

5.2.2 使用BeautifulSoup获取博客标题77

5.2.3 BeautifulSoup的其他功能78

5.3 使用lxml解析网页82

5.3.1 lxml的安装82

5.3.2 使用lxml获取博客标题82

5.3.3 XPath的选取方法84

5.4 总结85

5.5 BeautifulSoup爬虫实践:房屋价格数据86

5.5.1 网站分析86

5.5.2 项目实践87

5.5.3 自我实践题89

第6章 数据存储90

6.1 基本存储:存储至TXT或CSV91

6.1.1 把数据存储至TXT91

6.1.2 把数据存储至CSV93

6.2 存储至MySQL数据库94

6.2.1 下载安装MySQL95

6.2.2 MySQL的基本操作99

6.2.3 Python操作MySQL数据库104

6.3 存储至MongoDB数据库106

6.3.1 下载安装MongoDB107

6.3.2 MongoDB的基本概念110

6.3.3 Python操作MongoDB数据库112

6.3.4 RoboMongo的安装与使用113

6.4 总结115

6.5 MongoDB爬虫实践:虎扑论坛116

6.5.1 网站分析116

6.5.2 项目实践117

6.5.3 自我实践题123

第7章 Scrapy框架124

7.1 Scrapy是什么125

7.1.1 Scrapy架构125

7.1.2 Scrapy数据流(Data Flow)126

7.1.3 选择Scrapy还是Requests+bs4127

7.2 安装Scrapy128

7.3 通过Scrapy抓取博客128

7.3.1 创建一个Scrapy项目128

7.3.2 获取博客网页并保存129

7.3.3 提取博客标题和链接数据131

7.3.4 存储博客标题和链接数据133

7.3.5 获取文章内容134

7.3.6 Scrapy的设置文件136

7.4 Scrapy爬虫实践:财经新闻数据137

7.4.1 网站分析137

7.4.2 项目实践138

7.4.3 自我实践题141

第8章 提升爬虫的速度142

8.1 并发和并行,同步和异步143

8.1.1 并发和并行143

8.1.2 同步和异步143

8.2 多线程爬虫144

8.2.1 简单的单线程爬虫145

8.2.2 学习Python多线程145

8.2.3 简单的多线程爬虫148

8.2.4 使用Queue的多线程爬虫150

8.3 多进程爬虫153

8.3.1 使用multiprocessing的多进程爬虫153

8.3.2 使用Pool + Queue的多进程爬虫155

8.4 多协程爬虫158

8.5 总结160

第9章 反爬虫问题163

9.1 为什么会被反爬虫164

9.2 反爬虫的方式有哪些164

9.2.1 不返回网页165

9.2.2 返回非目标网页165

9.2.3 获取数据变难166

9.3 如何“反反爬虫”167

9.3.1 修改请求头167

9.3.2 修改爬虫的间隔时间168

9.3.3 使用代理171

9.3.4 更换IP地址172

9.3.5 登录获取数据172

9.4 总结172

第10章 解决中文乱码173

10.1 什么是字符编码174

10.2 Python的字符编码176

10.3 解决中文编码问题179

10.3.1 问题1:获取网站的中文显示乱码179

10.3.2 问题2:非法字符抛出异常180

10.3.3 问题3:网页使用gzip压缩181

10.3.4 问题4:读写文件的中文乱码182

10.4 总结184

第11章 登录与验证码处理185

11.1 处理登录表单186

11.1.1 处理登录表单186

11.1.2 处理cookies,让网页记住你的登录190

11.1.3 完整的登录代码193

11.2 验证码的处理194

11.2.1 如何使用验证码验证195

11.2.2 人工方法处理验证码197

11.2.3 OCR处理验证码200

11.3 总结203

第12章 服务器采集204


ots网络logo

OTS网络安全门户主要提供网络信息安全教程、文章、工具,让更多的小伙伴加入我们的社区一起学习。

技术支持: 建站ABC | 管理登录