为什么要学网络爬虫
我们初步认识了网络爬虫,但是为什么要学习网络爬虫呢?要知道,只有清晰地知道我们的学习目的,才能够更好地学习这一项知识,我们将会为大家分析一下学习网络爬虫的原因。
当然,不同的人学习爬虫,可能目的有所不同,在此,我们总结了4种常见的学习爬虫的原因。
1)学习爬虫,可以私人订制一个搜索引擎,并且可以对搜索引擎的数据采集工作原理进行更深层次地理解。
有的朋友希望能够深层次地了解搜索引擎的爬虫工作原理,或者希望自己能够开发出一款私人搜索引擎,那么此时,学习爬虫是非常有必要的。
简单来说,我们学会了爬虫编写之后,就可以利用爬虫自动地采集互联网中的信息,采集回来后进行相应的存储或处理,在需要检索某些信息的时候,只需在采集回来的信息中进行检索,即实现了私人的搜索引擎。
当然,信息怎么爬取、怎么存储、怎么进行分词、怎么进行相关性计算等,都是需要我们进行设计的,爬虫技术主要解决信息爬取的问题。
2)大数据时代,要进行数据分析,首先要有数据源,而学习爬虫,可以让我们获取更多的数据源,并且这些数据源可以按我们的目的进行采集,去掉很多无关数据。
在进行大数据分析或者进行数据挖掘的时候,数据源可以从某些提供数据统计的网站获得,也可以从某些文献或内部资料中获得,但是这些获得数据的方式,有时很难满足我们对数据的需求,而手动从互联网中去寻找这些数据,则耗费的精力过大。
此时就可以利用爬虫技术,自动地从互联网中获取我们感兴趣的数据内容,并将这些数据内容爬取回来,作为我们的数据源,从而进行更深层次的数据分析,并获得更多有价值的信息。
3)对于很多SEO从业者来说,学习爬虫,可以更深层次地理解搜索引擎爬虫的工作原理,从而可以更好地进行搜索引擎优化。
既然是搜索引擎优化,那么就必须要对搜索引擎的工作原理非常清楚,同时也需要掌握搜索引擎爬虫的工作原理,这样在进行搜索引擎优化时,才能知己知彼,百战不殆。
4)从就业的角度来说,爬虫工程师目前来说属于紧缺人才,并且薪资待遇普遍较高,所以,深层次地掌握这门技术,对于就业来说,是非常有利的。
有些朋友学习爬虫可能为了就业或者跳槽。从这个角度来说,爬虫工程师方向是不错的选择之一,因为目前爬虫工程师的需求越来越大,而能够胜任这方面岗位的人员较少,所以属于一个比较紧缺的职业方向,并且随着大数据时代的来临,爬虫技术的应用将越来越广泛,在未来会拥有很好的发展空间。
除了以上为大家总结的4种常见的学习爬虫的原因外,可能你还有一些其他学习爬虫的原因,总之,不管是什么原因,理清自己学习的目的,就可以更好地去研究一门知识技术,并坚持下来。
如何学习网络爬虫
给大家推荐的这本《python3网络爬虫开发实战》的作者是崔庆才,静觅博客的博主(https://cuiqingcai.com/)。
我当时自学的时候就在看他的博客了,简单直白说清楚问题,实操性高。当时还把他的博客收藏下来推荐给同样在学爬虫的小伙伴。现在他把他的博客整理成了书,知识体系更加系统,涵盖的场景也比之前多了很多,在这里推荐给大家。
这本书涵盖的知识范围很广,比如基础的
-
HTTP基本原理和网页的基本原理。建议大家如果以代码为生,至少多多少少都提前了解一点html。说不定实习的第一个任务就是制作某一个debug工具展示在网页上。
-
会话和Cookies。实际上是网页端认证。如果需要爬取需要登录的页面(比如微博),这个知识是必须要掌握的。
-
正则表达式。正则表达式是各种编程语言之间通用的一套进行字符串匹配和处理的一套定式。当你需要在一个奇奇怪怪但又有点规律的字符串里提取出你想要的信息的时候,正则表达式是最有用的武器。
-
Python中的urllib和requests库。常见的与网页交互的方法都在这两个库中维护。
-
Python中的一些常见的解析库。因为HTML是一种特殊的字符串,所以我们可能不需要那么累构造正则表达式去匹配,用一些通用的解析库就可以把HTML解析出来更方便的拿到元素信息。其中名气比较大的库应该是BeautifulSoup
-
Python中的数据存储方式。比如你想把爬取下来的数据存储在哪里?txt, csv这样的文件里,当时MySQL数据库里,或者一些KV存储的架构比如MongoDB或者Redis?
本书都对上述这些基础的概念做了简单的介绍。还有各种爬虫场景和可能遇到的问题:
-
不需要登陆的页面爬取。(这个应该是最简单的爬虫项目了)
-
Ajax数据爬取。现在越来越多的网页出于效率的考虑,都是Ajax异步加载数据,这样可以提高用户体验,但对爬虫来说需要额外处理一下。
-
动态渲染页面爬取。有时候不能直接在网页源代码上看到真正的HTML,这些HTML可能是访问的时刻通过JavaScript渲染的。不过这个时候就可以通过模拟浏览器登录来进行操作。最近帮理波特写的一个爬虫就是通过这种方式实现的。
-
如何识别验证码。虽说验证码的出现就是为了防止爬虫抓取的,但当然也是有办法破解的。
-
代理的使用。当我们需要大批量的高频率的爬取信息的时候,有时候会被一些有反爬虫机制的网站封掉IP,这时候我们就需要把我们伪装成一个新的IP来进行继续爬虫操作,这时候就需要代理来维护和管理自己的可用IP。
-
模拟登录。当我们爬取一些需要登录才能看到的信息的时候,就必须先模拟登录,才能进行进一步的爬虫操作。
-
App的爬取。上述的都是网页端的爬虫任务,但是现在越来越多的信息都只能在手机上看到,这种信息可不可以爬虫获取呢?本书对于这一部分也是有比较详细的介绍和案例,甚至还有朋友圈的爬取。事实上这块我目前也不是很熟悉,这也是我下一步要学习的地方。
难能可贵的时候,每次介绍新的概念和场景的时候,除了介绍概念,作者都是附上实际操作的源码。照着做可以很快的上手。
最后还有两个经典的爬虫框架,pyspider和scrapy,这两个框架在进行大批量的爬取可能会比较有帮助。现在我对这两个框架也没有研究过,还需要进一步的学习。比如scrapy在分布式场景下的部署和应用,本书都是有所涉及的。
接下来是《Python 3网络爬虫开发实战 》这本书的目录:
朋友们如果有需要全套《Python 3网络爬虫开发实战 》,扫描下方二维码免费领取(如遇扫码问题,评论区留言领取哦)~
第1章 开发环境配置
1.1 Python 3的安装 1
1.1.1 Windows下的安装 1
1.1.2 Linux下的安装 6
1.1.3 Mac下的安装 8
1.2 请求库的安装 10
1.2.1 requests的安装 10
1.2.2 Selenium的安装 11
1.2.3 ChromeDriver的安装 12
1.2.4 GeckoDriver的安装 15
1.2.5 PhantomJS的安装 17
1.2.6 aiohttp的安装 18
1.3 解析库的安装 19
1.3.1 lxml的安装 19
1.3.2 Beautiful Soup的安装 21
1.3.3 pyquery的安装 22
1.3.4 tesserocr的安装 22
1.4 数据库的安装 26
1.4.1 MySQL的安装 27
1.4.2 MongoDB的安装 29
1.4.3 Redis的安装 36
1.5 存储库的安装 39
1.5.1 PyMySQL的安装 39
1.5.2 PyMongo的安装 39
1.5.3 redis-py的安装 40
1.5.4 RedisDump的安装 40
1.6 Web库的安装 41
1.6.1 Flask的安装 41
1.6.2 Tornado的安装 42
1.7 App爬取相关库的安装 43
1.7.1 Charles的安装 44
1.7.2 mitmproxy的安装 50
1.7.3 Appium的安装 55
1.8 爬虫框架的安装 59
1.8.1 pyspider的安装 59
1.8.2 Scrapy的安装 61
1.8.3 Scrapy-Splash的安装 65
1.8.4 Scrapy-Redis的安装 66
1.9 部署相关库的安装 67
1.9.1 Docker的安装 67
1.9.2 Scrapyd的安装 71
1.9.3 Scrapyd-Client的安装 74
1.9.4 Scrapyd API的安装 75
1.9.5 Scrapyrt的安装 75
1.9.6 Gerapy的安装 76
第2章 爬虫基础 77
2.1 HTTP基本原理 77
2.1.1 URI和URL 77
2.1.2 超文本 78
2.1.3 HTTP和HTTPS 78
2.1.4 HTTP请求过程 80
2.1.5 请求 82
2.1.6 响应 84
2.2 网页基础 87
2.2.1 网页的组成 87
2.2.2 网页的结构 88
2.2.3 节点树及节点间的关系 90
2.2.4 选择器 91
2.3 爬虫的基本原理 93
2.3.1 爬虫概述 93
2.3.2 能抓怎样的数据 94
2.3.3 JavaScript渲染页面 94
2.4 会话和Cookies 95
2.4.1 静态网页和动态网页 95
2.4.2 无状态HTTP 96
2.4.3 常见误区 98
2.5 代理的基本原理 99
2.5.1 基本原理 99
2.5.2 代理的作用 99
2.5.3 爬虫代理 100
2.5.4 代理分类 100
2.5.5 常见代理设置 101
第3章 基本库的使用
3.1 使用urllib 102
3.1.1 发送请求 102
3.1.2 处理异常 112
3.1.3 解析链接 114
3.1.4 分析Robots协议 119
3.2 使用requests 122
3.2.1 基本用法 122
3.2.2 高级用法 130
3.3 正则表达式 139
3.4 抓取猫眼电影排行 150
第4章 解析库的使用
4.1 使用XPath 158
4.2 使用Beautiful Soup 168
4.3 使用pyquery 184
第5章 数据存储
5.1 文件存储 197
5.1.1 TXT文本存储 197
5.1.2 JSON文件存储 199
5.1.3 CSV文件存储 203
5.2 关系型数据库存储 207
5.2.1 MySQL的存储 207
5.3 非关系型数据库存储 213
5.3.1 MongoDB存储 214
5.3.2 Redis存储 221
第6章 Ajax数据爬取
6.1 什么是Ajax 232
6.2 Ajax分析方法 234
6.3 Ajax结果提取 238
6.4 分析Ajax爬取今日头条街拍美图 242
第7章 动态渲染页面爬取 249
7.1 Selenium的使用 249
7.2 Splash的使用 262
7.3 Splash负载均衡配置 286
7.4 使用Selenium爬取淘宝商品 289
第8章 验证码的识别
8.1 图形验证码的识别 298
8.2 极验滑动验证码的识别 301
8.3 点触验证码的识别 311
8.4 微博宫格验证码的识别 318
第9章 代理的使用
9.1 代理的设置 326
9.2 代理池的维护 333
9.3 付费代理的使用 347
9.4 ADSL拨号代理 351
9.5 使用代理爬取微信公众号文章 364
第10章 模拟登录
10.1 模拟登录并爬取GitHub 379
10.2 Cookies池的搭建 385
第11章 App的爬取
11.1 Charles的使用 398
11.2 mitmproxy的使用 405
11.3 mitmdump爬取“得到”App电子书
信息 417
11.4 Appium的基本使用 423
11.5 Appium爬取微信朋友圈 433
11.6 Appium+mitmdump爬取京东商品 437
第12章 pyspider框架的使用
12.1 pyspider框架介绍 443
12.2 pyspider的基本使用 445
12.3 pyspider用法详解 459
第13章 Scrapy框架的使用
13.1 Scrapy框架介绍 468
13.2 Scrapy入门 470
13.3 Selector的用法 480
13.4 Spider的用法 486
13.5 Downloader Middleware的用法 487
13.6 Spider Middleware的用法 494
13.7 Item Pipeline的用法 496
13.8 Scrapy对接Selenium 506
13.9 Scrapy对接Splash 511
13.10 Scrapy通用爬虫 516
13.11 Scrapyrt的使用 533
13.12 Scrapy对接Docker 536
13.13 Scrapy爬取新浪微博 541
第14章 分布式爬虫
14.1 分布式爬虫原理 555
14.2 Scrapy-Redis源码解析 558
14.3 Scrapy分布式实现 564
14.4 Bloom Filter的对接 569
第15章 分布式爬虫的部署
15.1 Scrapyd分布式部署 577
15.2 Scrapyd-Client的使用 582
15.3 Scrapyd对接Docker 583
15.4 Scrapyd批量部署 586
15.5 Gerapy分布式管理 590
由于文章内容比较多,篇幅不允许,部分未展示内容以截图方式展示。如有需要获取完整的资料文档的朋友点赞+评论《python3网络爬虫开发实战》,即可免费获取。