最近打算开一个系列讲一讲爬虫。由于爬虫是笔者自学,和大家一样,我也经历了一窍不通、一句不懂到逐渐理解和应用的过程,以及到后来的帮IT朋友写爬虫程序。从0到1的学习是散乱的,所以接下来打算开一篇专题,从一个小白的角度带大家认识和学习爬虫,希望这样能够帮到你。我会尽量将知识点梳理成系统,专题预计在8-10篇不会很长,以免消耗大家学习的兴趣。
使用python语言构建爬虫非常便捷,原因在于python强大的第三方库,能够简洁高效的构建网络请求、数据采集的动作。
今天不讲别的,我们先讲讲实现一个爬虫分为哪几步。
一、何为爬虫
“爬虫”一词其实在描述我们写的脚本。脚本运行时就像一个蜘蛛,按照我们设定好的步骤,请求网络、接收返回数据、摘取所需内容、本地存储。爬虫的学习路径也将围绕这四个阶段展开,我们需要知道如何让脚本进行网络请求,怎样接收返回的信息等等。所以,爬虫换句话也叫自动化数据采集。
如何采集网络信息呢?
思考一个现实中的例子,我们经常到网上搜索问题答案,亦或是下载音乐等。这时,我们借助浏览器访问某个网址比如百度、音乐网站等(请求网络),目标网站接收到浏览器的请求指令后,将符合条件的数据返回,并展示在浏览器上(接收返回数据)。我们通过肉眼观察找到想要的答案(数据结构分析、摘取所需内容),右键复制粘贴或点击下载保存到本地(本地存储)。
所以,一个爬虫程序就是代替了人工执行这些动作。借助计算机强大的算力,从而实现快速、高频的从网上摘取数据。
二、每步都在做些什么
根据上面的讲述,我们在写一个爬虫时,需要先有一个爬取的目标网站,先分析这个网站返回的数据结构,再写出与之对应的爬虫程序。那么问题来了,假如网站人员重构了页面和数据结构,爬虫是不是就失效了?是的,因为返回数据的结构变化,老程序不再能准确采集到数据,这时就需要修改或重新写。
爬虫第一步:找到要请求的目标网址。
拿浏览器举例,我们访问的页面花里胡哨,上面有logo、广告、标语,以及我们想要的数据。你目光所及的每块内容都是一条请求指令,网站后台接收到浏览器的请求后返回这些相关或不相关的数据,然后通过页面排版(即前端开发)展示出来。
我们需要通过进入浏览器的开发者界面,找到浏览器一共向网站发送了哪些请求,以及我们真正需要的请求是哪个。
爬虫第二步:学习发送请求
找到请求的目标后,我们需要分析如何向目标发送请求,即向目标网址发送请求时需要带哪些参数、验证码等等,然后构建请求的代码。
爬虫第三步:接收返回数据、提取数据
让代码接收返回的数据,分析其数据结构。对于一个特定的请求目标,其每次返回的数据结构往往是固定的。我们只要构建代码,就能从固定位置把我们想要的数据提取出来。
爬虫第四步:本次存储
到此一个爬虫程序的核心部分已经写完了,最后一步我们用读写操作把数据保存到本地文件里。
以上就是一个爬虫程序的框架思路了。未来我会按照这个结构逐一展开讲。
写出一个好的爬虫并不容易,前期要做很多分析工作,比如上面提到的分析请求目标、发送哪些参数、分析数据结构等等。网站的反爬手段也往往在这,通过隐藏数据、动态验证码、参数加盐等方式拒绝爬虫的访问,这时需要根据不同的目标进行针对性的研究。