标签:抽样 user blog 时间间隔 包含 info 时代 两种 特定
网络爬虫也叫网络蜘蛛、网络机器人。如今属于数据的时代,信息采集变得尤为重要,可以想象单单依靠人力去采集,是一件无比艰辛和困难的事情。网络爬虫的产生就是代替人力在互联网中自动进行信息采集和整理。
网络爬虫由控制节点、爬虫节点以及资源库构成,简单而言就是控制节点控制爬虫节点爬取和处理网页存储到资源库中。网络爬虫中有多个控制节点和爬虫节点,一个控制节点控制着多个爬虫节点,同一个控制节点下的多个爬虫节点可以相互通信,多个控制节点也可以相互通信。
通用网络爬虫:也称为全网爬虫,爬取目标是整个互联网,主要应用于大型搜索引擎。主要应用的爬行策略:深度优先爬行策略和广度优先爬行策略。
聚焦网络爬虫:爬取选择的特定网页。主要应用的爬行策略:基于内容评价的爬行策略、基于链接评价的爬行策略、基于增强学习的爬行策略和基于语境图的爬行策略。
增量式网络爬虫:只爬取内容更新的网页或者新产生的网页。
深层网络爬虫:爬取互联网中的深层页面。网页分为表层页面和深层页面,表层页面是指通过静态链接可以直接获取的页面,而深层页面则是需要通过验证表单获取的页面。因此,深层网络爬虫需要表单填写,而对于表单的填写又分为两种类型:基于领域知识的表单填写和基于网页结构分析的表单填写。基于领域知识的表单填写:建立一个关键词库,填写表单时,根据语义选择关键词填写;基于网页结构分析的表单填写:当领域知识有限,根据网页结构进行分析,自动填写。
平时我们日常说的爬虫多是指聚焦网络爬虫,聚焦网络爬虫的基本流程为:
聚焦网络爬虫控制中心负责整个爬虫系统的管理和监控。初始URL集合传递到URL队列,页面爬行模块从URL队列取出一批URL列表,后爬取互联网中的页面并传送到页面数据库中存储。与此同时,爬取页面获取的新的URL会使用链接过滤模块结合选定的主题滤除无用链接,剩余URL通过链接评价模块和内容评价模块进行优先级排序后推入URL队列。另一方面,存储在页面数据块的页面需要经过页面分析模块对页面信息进行处理,根据处理结果建立索引数据库,方便用户检索。
爬虫与搜索引擎是密不可分的,搜索引擎核心工作流程:
搜索引擎利用爬虫模块(爬行器和控制器)爬取网页,后把爬取的网页存储在原始数据库中。索引器对原始数据库中数据建立索引,并存储到索引数据库。用户通过用户交互接口检索信息时,一方面通过检索器和索引数据库搜索信息;另一方面,产生的用户日志通过用户日志数据库和日志分析器进行存储和处理,处理结果反馈给原始数据库和索引数据库,根据用户检索要求对数据库中信息进行调整排名等操作。
聚焦网络爬虫
前面说过,确定URL队列中爬取优先顺序在聚焦网络爬虫中尤为重要,而爬取URL优先级需要根据爬行策略来确定。主要的爬行策略有:深度优先策略、广度优先策略、大站优先策略、反链爬行策略等。
深度优先策略:深度表现为纵向,深度优先策略会按照爬取的网页依次爬取该网页下层的所有链接在返回上层继续爬取。顺序为:A-E-F-B-C-G-H。
广度优先策略:广度表现为横向,广度优先策略会按照爬取的网页依次爬取同一层级的所有网页再爬取下一层级。顺序为:A-B-C-E-F-G-H。
大站优先策略:大站是指网页所在站点分类,单个站点所包含网页数量多少依次排序,按照网页数量多的站点开始爬取。
反向链策略:反向链是指该网页被其他页面指向链接,爬行策略为优先爬取反向链接数多的网页,即按网页被其他网页链接指向次数排序。
其他爬行策略还有OPIC策略、PageRank策略...
我们知道网站的网页是经常更新,产品上新或者新闻更新等等。那作为爬虫什么时间重新爬取网页呢?考虑两个问题:一是网页更新过慢情况,爬虫爬取时间间隔短,势必产生多次爬取无效内容,对爬虫和服务器而言都会增加不必要的压力;二是网页更新过快,而爬虫爬取时间间隔过长,那么必然会存在数据获取不完整的情况。显然,只有爬取时间间隔和网页更新时间间隔一致的情况下,效果会更好。因此,当爬虫服务器资源有限时,制定合理网页更新策略,更有助于我们对网页获取以及网站服务器的减负。常见的网页更新策略有:用户体验策略、历史数据策略以及聚类分析策略等。
用户体验策略:用户体验表现在什么时候呢?打开百度,搜索关键词出现一系列搜索结果,当我们作为用户时,一般优先关注前几条或者前几页的网页。而用户体验策略则是优先更新搜索结果排名靠前的网页,并依据爬虫爬取网页多个历史版本的内容更新、搜索质量影响、用户体验等信息,确定爬虫的爬取周期。
历史数据策略:爬虫爬取某个网页的多个历史版本,可以得出网页的历史更新数据,历史数据策略是根据历史数据借助数学手段建模分析,预测网页下一次更新时间,进而确定爬虫爬取周期。
聚类分析策略:用户体验策略和历史数据策略都需要网页历史数据进行分析,对于新网页而言是不友好的。聚类分析策略是采取对具有相同或者相似属性的网页划归分类,这种分类称之为聚类。对一个聚类而言,因为存在相同或者相似的属性,我们认定网页更新时间也比较相近,对一个聚类抽样分析更新间隔,再对多个样本结果求均值减小误差,以此确定爬虫爬取周期。
前面说过,搜索引擎搜索结果会按照先后排名出现,那么怎么实现搜索结果的网页排序呢?网页分析算法就是实现爬取网页排序问题的方法,常见的网页分析算法有:基于用户行为的网页分析算法、基于网络拓扑的网页分析算法、基于网页内容的网页分析算法。
基于用户行为的网页分析算法:简单来说就是通过用户对网页的访问行为,对网页进行评价排序。访问行为有:访问频率、访问时长等。
基于网络拓扑的网页分析算法:依据网页之间的链接关系、结构关系以及网页数据等对网页进行分析、评价、排序。基于网页拓扑的网页分析算法按照粒度有可细分为:基于网页粒度的分析算法、基于网页块粒度的分析算法、基于网站粒度分析算法。
基于网页内容的分析算法:依据网页中的数据和文本信息对网页进行评价排序。
爬虫爬取网页时,一般是需要先访问网页的。对于爬虫而言,爬取网页时,服务器是可以识别出不是用户行为的,进而采取拒绝访问或者封IP等行为。那么如何让爬虫伪装成用户呢?爬虫爬取访问网页的时候,可以在HTTP请求中添加User-Agent信息来告诉服务器身份信息。
一般爬虫访问一个网站的时候,需要先检查一下站点下的Robots.txt文件来确定可以爬取的网页范围,对于一些禁止的URL,按照Robot协议是不应爬取访问的。
一般Robots.txt查看方式:根URL/Robots.txt。
具体添加User-Agent信息方法,查看:python爬虫之User-Agent用户信息
标签:抽样 user blog 时间间隔 包含 info 时代 两种 特定
原文地址:https://www.cnblogs.com/snow-lanuage/p/10341618.html