Google 与 Yahoo 等网站的背后,都有一个强大的网页收集程序,可以将全世界的网页通通抓回去储存以便提供搜寻之用,这个程式就称为 "爬虫 (Crawler)",也有人索性称为蜘蛛 (Spider),因为这个就好像在网络上爬来爬去的蜘蛛一样,到处抓网页回家放。 那么到底什么是网络爬虫呢?橙子君就和大家一起来探究一下“网络爬虫吧”,希望对大家有所帮助。
网络爬虫是什么?
- 维基百科关于网络爬虫的定义
网络蜘蛛(Web spider)也叫网络爬虫(Web crawler),蚂蚁(ant),自动检索工具(automatic indexer),或者(在FOAF软件概念中)网络疾走(WEB scutter),是一种“自动化浏览网络”的程序,或者说是一种网络机器人。它们被广泛用于互联网搜索引擎或其他类似网站,以获取或更新这些网站的内容和检索方式。它们可以自动采集所有其能够访问到的页面内容,以供搜索引擎做进一步处理(分检整理下载的页面),而使得用户能更快的检索到他们需要的信息。 网络爬虫始于一张被称作种子的统一资源地址(URLs)列表。当网络爬虫访问这些统一资源定位器时,它们会甄别出页面上所有的超链接,并将它们写入一张"待访列表",即所谓"爬行疆域"(crawl frontier)。此疆域上的统一资源地址将被按照一套策略循环访问。如果爬虫在他执行的过程中复制归档和保存网站上的信息,这些档案通常储存,使他们可以被查看。阅读和浏览他们的网站上实时更新的信息,并保存为网站的“快照”。大容量的体积意味着网络爬虫只能在给定时间内下载有限数量的网页,所以要优先考虑其下载。高变化率意味着网页可能已经被更新或者删除。一些被服务器端软件生成的URLs(统一资源定位符)也使得网络爬虫很难避免检索到重复内容。
简单点说,网络爬虫是一个自动提取网页的程序,它为搜索引擎从万维网上下载网页,是搜索引擎的重要组成。
网络爬虫的工作原理
网络就是指互联网上的所有网站,各大搜索引擎都会派出它自己的爬虫程序,然后进入到互联网上去抓取,把抓取到的所有内容存到它的网页内容库里面,然后在内容库里面再通过索引程序做一个索引库,最终展现在用户面前的只有一个简单的搜索框,然后用户通过搜索框输入一个关键词,然后就会马上快速的去找到对应的内容,找到之后就会展现出来给用户看,这就是一个搜索引擎爬虫的工作原理。
网络爬虫的抓取策略
在爬虫系统中,待抓取URL队列是很重要的一部分。待抓取URL队列中的URL以什麽样的顺序排列也是一个很重要的问题,因为这涉及到先抓取那个页面,后抓取哪个页面。而决定这些URL排列顺序的方法,叫做抓取策略。网页的抓取策略可以分为深度优先、广度优先和最佳优先三种。深度优先在很多情况下会导致爬虫的陷入(trapped)问题,目前常见的是广度优先和最佳优先方法。
- 广度优先搜索策略 广度优先搜索策略是指在抓取过程中,在完成当前层次的搜索后,才进行下一层次的搜索。该演算法的设计和实现相对简单。在目前为覆盖尽可能多的网页,一般使用广度优先搜索方法。也有很多研究将广度优先搜索策略应用于聚焦爬虫中。其基本思想是认为与初始URL在一定链接距离内的网页具有主题相关性的概率很大。另外一种方法是将广度优先搜索与网页过滤技术结合使用,先用广度优先策略抓取网页,再将其中无关的网页过滤掉。这些方法的缺点在于,随著抓取网页的增多,大量的无关网页将被下载并过滤,演算法的效率将变低。
- 最佳优先搜索策略 最佳优先搜索策略按照一定的网页分析演算法,预测候选URL与目标网页的相似度,或与主题的相关性,并选取评价最好的一个或几个URL进行抓取。它只访问经过网页分析演算法预测为「有用」的网页。存在的一个问题是,在爬虫抓取路径上的很多相关网页可能被忽略,因为最佳优先策略是一种局部最优搜索演算法。因此需要将最佳优先结合具体的应用进行改进,以跳出局部最优点。研究表明,这样的闭环调整可以将无关网页数量降低30%~90%。
一种分布式网络爬虫的架构设计
网络爬虫的基本步骤
通常把爬虫爬取资源分成一下几个步骤:url-crawling(链接抓取),info-crawling(信息抓取),format&fusion(规整与聚合)。 具体执行顺序为: * 1.获取目标路径 * 2.创建一个URL对象,将目标路径传递过去 * 3.建立一个和URL相关的链接 * 4.有的网站有反爬虫机制,这个时候需要我们伪装成为一个浏览器:设置User Agent * 5. 通过链接获取一个输入流,开始抓取网站上的信息 * 6.利用数据库或者json等将网站信息保存,并且读取出来 * 7.关闭流 以下是网络爬虫抓取网页的架构及流程图: