简介:
网络爬虫的主体爬取方案,主要有两种类型:一.url匹配正则分类爬取 二.分层爬取
分层爬取方案:
网站的用途是给人去浏览查看,如果遍历一个网站的操作模式,你会发现网站是具有层级结构的,
以某招聘网站为例,你想要查看该网站上的招聘信息,一种方式是通过搜索关键字去找到指定页面,另外一种是通过网站上的分类去查看指定的页面.第一种方式,我们并不清楚所有的关键字的类型,无法完成全量的爬取,对于爬虫来说是不可取的.
想要获取尽量全面的网站数据,不是一件容易的事情,如果你比较细心,你可以发现,大多数网站往往对数据的分页是有限制的,例如:查某招聘网站,你通过文员分类进入,发现只有70页的数据,然后又通过互联网的分类进入,同样也只有70页的数据.你可以尝试进入文员分类的子分类,你会发现多个子分类的页面之和远远大于父节点分类的页数.那我们该如何获取尽量全面的网站数据呢?
可以将爬取行为分为4层,
第一层:城市页层,先获取每个城市的url地址
第二层:分类页层,进入大分类页面后判断该大分类是否达到极限分页,如果达到则需要进一步往下分类,如果没有达到极限分页,则保留每一个分页的url,以此类推,获取所有的分页,该层也是其中最复杂的一层
第三层:分页层,该层的逻辑就是获取所有,详情页url
第四层:数据页层,解析页面获取需要的数据即可
每一层都是可以作为一套解析模板来开发,爬取完一层后,再开始下一层级的爬取工作,后期也非常方便维护
注:数据页有时不一定包含所有的信息,可以将前面几层的信息也保存下来(例如:城市,分类)
url匹配方案:
从我们进入目标网站开始,每个网页中都拥有下一步的目标网页的url地址,如果我们需要获取数据,简单来说只需要将该网站上所有的url遍历一遍即可.
在实际操作过程中,网页与网页之间,是存在互相引用的,如果不停的递归爬取,会导致死循环,还会产生大量的重复数据,为此,我们需要对已经爬取的url进行标记,并对新加入的数据,进行对比去重.
网页的url中,不光只有下一级网页的数据,同时还包含大量的图片地址和外网地址,为此我们必须要使用正则去锁定一个网站url的匹配规则.
最后,我们只需要去锁定承载数据的页面,并进行页面的解析
后记:
上述两种方案中,作者本人更加喜欢分层爬取方案
理由:
1.下一个层级的页面url,不一定是直接以url字符串的形式保留在页面上,很有可能是调用js使参数与基础url的拼接发送请求
2.url匹配方案每爬取一批url都需要进行一次,对比去重操作,而分层爬取方案只需要在爬取完数据,基于url进行一次去重操作即可
3.海量数据的爬取是一个长期的事情,url匹配方案,无法监控爬取的进度,然而分层爬取方案是基于一层一层的爬取的,可以大致预测整体的爬取进度
4.如果数据页的url匹配规则无法完全囊括所有的url,url匹配方案会丢失缺损规则的数据并且无法发现(我们无法提前知道所有的数据页url,为其提供万能的匹配规则)
当然,对于数据量不大的网站,从开发效率上来讲,还是url匹配方案比较便捷,逻辑也非常的简单
神龙|纯净稳定代理IP免费测试>>>>>>>>天启|企业级代理IP免费测试>>>>>>>>IPIPGO|全球住宅代理IP免费测试