1.1.2 网络爬虫的流程
1.基本流程
捜索引擎抓取系统的主要组成部分是网络爬虫,把互联网上的网页下载到本地形成一个联网内容的镜像备份是网络爬虫的主要目标。
网络爬虫的基本工作流程如下:一开始选取一部分精心挑选的种子URL;把这些URL放入URL队列中;从URL队列中取出待抓取的URL,读取URL之后开始解析DNS,并把URL对应的网页下载下来,放进网页库中。此外,把这些URL放入已抓取URL队列。
分析已抓取URL队列中的URL,并且把URL放入待抓取URL队列,使其进入下一个循环。网络爬虫的基本流程如图1-1所示。
图1-1 网络爬虫的基本流程
用简短易懂的方式来讲,即分为四个步骤:发送请求→获取响应内容→解析内容→保存数据。请求流程如图1-2所示。
图1-2 请求流程图
2.从网络爬虫的角度对互联网进行划分
从网络爬虫的角度可将互联网划分为以下五种:
(1)已下载未过期网页。
(2)已下载已过期网页:抓取到的网页实际上是互联网内容的一个镜像与备份,互联网是动态变化的,一部分互联网上的内容已经发生变化,这时这部分抓取到的网页就已经失效。
(3)待下载网页:是指待抓取URL队列中的那些页面。
(4)可知网页:尚未抓取下来,也没有在待抓取URL队列中,但是能够经由对已抓取页面或者待抓取URL对应页面进行分析获得的URL,认为是可知网页。
(5)不可知网页:还有一部分网页,网络爬虫是无法直接抓取下载的,称为不可知网页。
网页类别划分如图1-3所示。
3.网页抓取的基本原理
常见的叫法是网页抓屏(Screen Scraping)、数据挖掘(Data Mining)、网络收割(Web Harvesting)或其类似的叫法。
理论上,网页抓取是一种经由多种方法收集网络数据的方式,不仅是经由与API交互的方式。
最常用的方法是确定爬取的URL,确定数据存储格式,写一个自动化程序向网络服务器请求数据(通常是用HTML表单或其网页文件),而后对数据进行清洗解析,汲取需要的信息并存入数据库,基本思路如图1-4所示。
图1-3 网页划分类别
图1-4 基本思路图
4.目标源选择
目标源选择应依照以下条件进行排序:数据相关性、易抓取程度、数据量、Robots协议。当然,根据自己的需求能够自由变更。同等情况下尽量避免大型企业的官网,因为其中大部分都设有反爬机制。
5.编辑网络爬虫
推荐使用的库有requests、BeautifulSoup、Scrapy、Selenium,假如关于效率需求不是特别高,能够考虑使用requestspost请求采集页面,而后使用BeautifulSoup分析页面标签,这样实现较为简短易懂,也能解决大部分需求;假如对效率比较重视,或需要完成一个工程化的采集项目,Scrapy能够作为首选。对分布式处理的良好支持和清晰的模块化层次在提升效率的同时更易于进行代码的管理。对HTTP的相关请求,使用requests比用其他函数更加明智。
6.数据清洗
获得的数据和期望中的数据总有一定的差别,这一部分的任务便是排除异常数据,把其余数据转换为易于处理的形式。数据的异常主要包括数据格式异常和数据内容异常。需要的数据可能存放在一个PDF、Word、JPG格式的文件中,把它们转换成文本而后选取相应的信息,这是数据清洗工作的一部分。另外,由于网页发布者的疏忽,网页上有部分数据和其他页面呈现不同,但需要把这部分数据也抓取下来,此时需要进行一定的处理,把数据格式进行统一。