解析网络爬虫的数据采集方法及原理策略

x
用微信扫描二维码
分享至好友和朋友圈

  网络爬虫的数据采集方法有哪些?网络数据采集是指通过网络爬虫或网站公开API等方式从网站上获取数据信息。在互联网时代,网络爬虫主要是为搜索引擎提供最全面和最新的数据。在大数据时代,网络爬虫更是从互联网上采集数据的有利工具。目前已经知道的各种网络爬虫工具已经有上百个,网络爬虫工具基本可以分为三类。

  

  网络爬虫工具有哪几类?

  1、分布式网络爬虫工具,如 Nutch。

  2、Java 网络爬虫工具,如 Crawler4j、WebMagic、WebCollector。

  3、非 Java 网络爬虫工具,如 Scrapy(基于 Python 语言开发)。

  网络爬虫原理是什么?

  网络爬虫是一种按照一定的规则,自动地抓取 Web 信息的程序或者脚本。Web网络爬虫可以自动采集所有其能够访问到的页面内容,为搜索引擎和大数据分析提供数据来源。从功能上来讲,爬虫一般有数据采集、处理和存储三部分功能。

  网页中除了包含供用户阅读的文字信息外,还包含一些超链接信息。

  网络爬虫系统正是通过网页中的超链接信息不断获得网络上的其他网页的。网络爬虫从一个或若干初始网页的 URL 开始,获得初始网页上的 URL,在抓取网页的过程中,不断从当前页面上抽取新的 URL 放入队列,直到满足系统的一定停止条件。

  网络爬虫系统一般会选择一些比较重要的、出度(网页中链出的超链接数)较大的网站的 URL 作为种子 URL 集合。

  网络爬虫系统以这些种子集合作为初始 URL,开始数据的抓取。因为网页中含有链接信息,通过已有网页的 URL 会得到一些新的 URL。

  可以把网页之间的指向结构视为一个森林,每个种子 URL 对应的网页是森林中的一棵树的根结点,这样网络爬虫系统就可以根据广度优先搜索算法或者深度优先搜索算法遍历所有的网页。

  由于深度优先搜索算法可能会使爬虫系统陷入一个网站内部,不利于搜索比较靠近网站首页的网页信息,因此一般采用广度优先搜索算法采集网页。

  网络爬虫系统首先将种子 URL 放入下载队列,并简单地从队首取出一个 URL 下载其对应的网页,得到网页的内容并将其存储后,经过解析网页中的链接信息可以得到一些新的 URL。

  其次,根据一定的网页分析算法过滤掉与主题无关的链接,保留有用的链接并将其放入等待抓取的 URL 队列。

  最后,取出一个 URL,对其对应的网页进行下载,然后再解析,如此反复进行,直到遍历了整个网络或者满足某种条件后才会停止下来。

  网络爬虫工作流程

  1)首先选取一部分种子 URL。

  2)将这些 URL 放入待抓取 URL 队列。

  3)从待抓取 URL 队列中取出待抓取 URL,解析 DNS,得到主机的 IP 地址,并将 URL 对应的网页下载下来,存储到已下载网页库中。此外,将这些 URL 放进已抓取 URL 队列。

  4)分析已抓取 URL 队列中的 URL,分析其中的其他 URL,并且将这些 URL 放入待抓取 URL 队列,从而进入下一个循环。

  网络爬虫抓取策略

  1. 通用网络爬虫

  通用网络爬虫又称全网爬虫,爬行对象从一些种子 URL 扩展到整个 Web,主要为门户站点搜索引擎和大型 Web 服务提供商采集数据。为提高工作效率,通用网络爬虫会采取一定的爬行策略。常用的爬行策略有深度优先策略和广度优先策略。

  1)深度优先策略

  深度优先策略是指网络爬虫会从起始页开始,一个链接一个链接地跟踪下去,直到不能再深入为止。网络爬虫在完成一个爬行分支后返回到上一链接结点进一步搜索其他链接。当所有链接遍历完后,爬行任务结束。这种策略比较适合垂直搜索或站内搜索,但爬行页面内容层次较深的站点时会造成资源的巨大浪费。

  在深度优先策略中,当搜索到某一个结点的时候,这个结点的子结点及该子结点的后继结点全部优先于该结点的兄弟结点,深度优先策略在搜索空间的时候会尽量地往深处去,只有找不到某结点的后继结点时才考虑它的兄弟结点。这样的策略就决定了深度优先策略不一定能找到最优解,并且由于深度的限制甚至找不到解。

  如果不加限制,就会沿着一条路径无限制地扩展下去,这样就会“陷入”到巨大的数据量中。一般情况下,使用深度优先策略都会选择一个合适的深度,然后反复地搜索,直到找到解,这样搜索的效率就降低了。所以深度优先策略一般在搜索数据量比较小的时候才使用。

  2)广度优先策略

  广度优先策略按照网页内容目录层次深浅来爬行页面,处于较浅目录层次的页面首先被爬行。当同一层次中的页面爬行完毕后,爬虫再深入下一层继续爬行。由于广度优先策略是对第 N 层的结点扩展完成后才进入第 N+1 层的,所以可以保证以最短路径找到解。这种策略能够有效控制页面的爬行深度,避免遇到一个无穷深层分支时无法结束爬行的问题,实现方便,无须存储大量中间结点,不足之处在于需较长时间才能爬行到目录层次较深的页面。

  如果搜索时分支过多,也就是结点的后继结点太多,就会使算法耗尽资源,在可以利用的空间內找不到解。

  本文链接:http://www.cnitedu.cn/it/share/20198715.html

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

跟贴 跟贴 1 参与 1
© 1997-2020 网易公司版权所有 About NetEase | 公司简介 | 联系方法 | 招聘信息 | 客户服务 | 隐私政策 | 广告服务 | 网站地图 | 意见反馈 | 不良信息举报

IT培训

专注IT技能资讯分享

头像

IT培训

专注IT技能资讯分享

7332

篇文章

533

人关注

列表加载中...
请登录后再关注
x

用户登录

网易通行证/邮箱用户可以直接登录:
忘记密码