对于网络爬虫技术的学习,其他教学很少有从整体结构来说的,多数是直接放出某部分代码。这样的方法会使初学者摸不着头脑:就好像是盲人摸象,有人摸到的是象腿,以为是一根大柱子;有人摸到的是大象耳朵,以为是一把大蒲扇等。
在开始第一个爬虫之前,先从宏观角度出发说清楚两个问题: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)存储数据。
(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)。
除此之外,后续还会介绍Scrapy爬虫框架,也会介绍分布式爬虫。
如果对于上述技术不熟悉的读者也不必担心,本书将会对其中的技术进行讲解,力求做到深入浅出。