视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
网络数据爬虫什么意思
2023-05-12 10:38:10 责编:小OO
文档


目前,大多数大型爬虫系统采用的是分布式方式,但仍然不能满足用户的实际需要。下面是小编为您整理的关于数据爬虫什么意思,希望对你有所帮助。

数据爬虫什么意思

数据爬虫是请求网站并提取数据的自动化程序。网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。

爬虫基本流程

发起请求:通过HTTP库向目标站点发起请求,即发送一个Request,请求可以包含额外的headers等信息,等待服务器响应。

获取响应内容:如果服务器能正常响应,会得到一个Response,Response的内容便是所要获取的页面内容,类型可能有HTML,Json字符串,二进制数据(如图片视频)等类型。

解析内容:得到的内容可能是HTML,可以用正则表达式、网页解析库进行解析。可能是Json,可以直接转为Json对象解析,可能是二进制数据,可以做保存或者进一步的处理。

保存数据:保存形式多样,可以存为文本,也可以保存至数据库,或者保存特定格式的文件。

网络爬虫都能做什么?

网络爬虫是一种程序,主要用于搜索引擎,它将一个网站的所有内容与链接进行阅读,并建立相关的全文索引到数据库中,然后跳到另一个网站.样子好像一只大蜘蛛.

当人们在网络上(如google)搜索关键字时,其实就是比对数据库中的内容,找出与用户相符合的.网络爬虫程序的质量决定了搜索引擎的能力,如google的搜索引擎明显要比百度好,就是因为它的网络爬虫程序高效,编程结构好.

爬虫可以爬取ajax信息么

网页上有一些异步加载的数据,爬取这些数据有两种方法:使用模拟浏览器(问题1中描述过了),或者分析ajax的http请求,自己生成ajax请求的url,获取返回的数据。如果是自己生成ajax请求,使用开源爬虫的意义在哪里?其实是要用开源爬虫的线程池和URL管理功能(比如断点爬取)。

如果我已经可以生成我所需要的ajax请求(列表),如何用这些爬虫来对这些请求进行爬取?

爬虫往往都是设计成广度遍历或者深度遍历的模式,去遍历静态或者动态页面。爬取ajax信息属于deep web(深网)的范畴,虽然大多数爬虫都不直接支持。但是也可以通过一些方法来完成。比如WebCollector使用广度遍历来遍历网站。爬虫的第一轮爬取就是爬取种子集合(seeds)中的所有url。简单来说,就是将生成的ajax请求作为种子,放入爬虫。用爬虫对这些种子,进行深度为1的广度遍历(默认就是广度遍历)。

爬虫怎么爬取要登陆的网站?

这些开源爬虫都支持在爬取时指定cookies,模拟登陆主要是靠cookies。至于cookies怎么获取,不是爬虫管的事情。你可以手动获取、用http请求模拟登陆或者用模拟浏览器自动登陆获取cookie。

爬虫怎么抽取网页的信息?

开源爬虫一般都会集成网页抽取工具。主要支持两种规范:CSS SELECTOR和XPATH。至于哪个好,这里不评价。

爬虫怎么保存网页的信息?

有一些爬虫,自带一个模块负责持久化。比如webmagic,有一个模块叫pipeline。通过简单地配置,可以将爬虫抽取到的信息,持久化到文件、数据库等。还有一些爬虫,并没有直接给用户提供数据持久化的模块。比如crawler4j和webcollector。让用户自己在网页处理模块中添加提交数据库的操作。至于使用pipeline这种模块好不好,就和操作数据库使用ORM好不好这个问题类似,取决于你的业务。

数据爬虫综述

随着大数据时代的来临,互联网对人类的生活影响越来越深入,已经成为人类获取信息的主要来源之一。互联网为用户带来海量数据的同时也带来了困扰,如何及时获得有效信息成为研究重点。搜索引擎根据预定的策略从互联网上发现和抓取数据,存入本地;对数据进行去噪、抽取和生成索引等处理,最终为用户提供信息检索服务,将相关信息展示给用户的系统。

爬虫(Crawler)是搜索引擎架构中的最底层模块,以一定的策略从互联网上抓取数据,并对数据进行预处理,然后将处理后的数据提交给搜索引擎其他模块,数据的质量和数量直接影响用户的体验。但是,随着大数据时代互联网数据爆炸式增长,爬虫抓取数据的速度越来越不能满足实际应用的需要。解决这个问题主要从软硬件考虑:一是升级爬虫的硬件,使用性能更好的硬件设备,但性价比不高,且不易扩展;二是利用分布式方式提高爬虫的并行处理能力,但这种方法会增加爬虫系统设计的复杂度。

其次,爬虫系统还需解决网页动态变化导致本地副本过期的问题。网页随时都可能变化,有的几小时更新一次,爬虫系统必须及时的发现并更新本地的网页,但互联网海洋中网页数量多、分布广,爬虫系统更新一遍需要数周甚至更长的时间,使得本地库中网页副本时新性较低。因此,一个采集速度快,网页更新及时的高可靠爬虫系统,不仅仅为搜索引擎提供基础数据,也可以为数据分析、挖掘提供基础数据,从而获得信息、知识。

Nutch 是Apache 软件基金会的一个开源项目,由Java 编写的可扩展和可伸缩的搜索引擎,具有跨平台的优点,使用基于模块化的思想设计。它基于Hadoop的分布式处理模型保证了系统的性能,类似Eclipse 的插件机制有利于用户自定义扩展Nutch。Nutch 为我们研究搜索引擎爬虫的原理及工作机制提供了一个很好的平台。

Nutch 有两种运行模式:分布式模式和单机模式。分布式模式采用HDFS 作为存储文件系统,并利用MapReduce 实现爬虫抓取网页的各个环节,从而使Nutch 能够抓取、存储海量网页。Nutch有两部分:爬虫和检索。爬虫负责从互联网抓取数据存储在本地,索引程序对抓取在本地的数据建立索引,然后存储在索引库。检索程序接收用户的查询请求,搜索索引库中的索引并返回结果。

Nutch 爬虫系统是由爬虫程序以及用于维护相关数据结构的程序组成,采用插件机制进行设计,因此可以很清晰地分离出爬虫运行各阶段的任务。Nutch 的爬虫通过累积式抓取和增量式抓取方式从互联网中将网页抓下来,分布式模式下将数据存储在HDFS 中,为其他模块提供基础数据。在 Hadoop 分布式平台下,Nutch 在抓取数据的各阶段都向Hadoop 提交MapReduce job,且这些job 都有严格的前后顺序关系。

Nutch 爬行工作流程如下:

1)建立初始种子URL 集:一般新建一个文件包含指定的网址,上传到HDFS上。非全网爬行时,还需在$NUTCH_HOME/conf/regex-urlfilter.txt 文件中设置超链接的过滤规则,过滤掉不合规则的URL;

2)Inject:该操作是由org.apache.nutch.crawl 包中的Injector 类完成,将URL集注入 CrawlDB 数据库。利用插件 URL Normalizers 和URL Filters 对URL 格式化、过滤,消去重复的URL,并设置URL 状态和初始化分值,再更新CrawlDB 数据库中相对应的内容,并标记已经爬行的URL;

3)Generate:该操作是由org.apache.nutch.crawl 包中的Generator 类完成,从CrawlDB 数据库中取出URL 创建抓取列表。当一次爬行完成后, Generate 阶段利用CrawlDB 库中的信息对已爬的URL进行过滤,之后运用Hash 算法对URL 进行降序排列,结果存入segments 目录下的一个目录,目录名是一个时间戳。循环爬行多少次,segments 目录下就有多少这样的文件;

4)Fetch:该操作是由org.apache.nutch.fetcher 包中的Fetcher 类完成,执行抓取,获取网页信息。抓取按 segments 目录下的URL 列表进行,可以自定义爬行的深度(depth)及线程数,适度的增加线程数可以很好地提高Nutch 爬行的效率。网页结果存储在segments 相对应的目录下;

5)Parse:该操作是由org.apache.nutch. parse 包中的ParseSegment 类完成。对 Fetch 抓到的网页进行解析,得到parse-data 和parse-text 两个目录。parse-text 目录存储的是网页的文本信息,parse-data 目录存储的是日期、超链接、题名等其他网页信息;

6)Update CrawlDB:该操作是由org.apache.nutch.crawl 包中的CrawlDb 类完成。根据抓取下来的 segments 目录下的内容更新CrawlDB数据库,更新包括URL爬行周期、爬行间隔、网页指纹等,还要将Parse 阶段解析出的新的URL 加入到CrawlDB,为新的抓取提供URL列表;

7)循环执行3~6 的步骤,直到depth 的值。以上循环过程可以总结为“产生/抓取/更新”循环;

8)Update LinkDB:Nutch 爬行结束后,更新LinkDB 并建立索引。

Nutch 网页更新机制采用的是邻比法。对第一次采集的网页,邻比法设置其更新时间为初始值。如果该网页在这个时间内更新了,则更新时间缩小一定值;如果没有更新,则更新时间增加一定值。Nutch 网页更新机制我们称为Recrawl 机制,它提供AdaptiveFetchSchedule class 来管理爬虫的重新抓取。

Nutch作为开源的搜索引擎框架,能够得到极速的发展使用,不仅是因为Nutch具有以上的功能,还有一项重要的机制促使了Nutch的快速发展,那便是Nutch的插件机制,这种机制极大地方便了研究工作,通过这个扩展机制,能满足了个性化需求。Nutch的插件机制的基本思想是借鉴了Eclipse软件对插件的使用。其优点主要体现为以下几点:

1.可扩展性。插件机制的使用,极大地提高了Nutch对于不同应用的扩展,在实际开发中只需要对特定的接口进行简单的实现,便能够生成具有特定功能的搜索引擎,满足了各种特色的搜索服务。

2.灵活性。插件拥有着强大的资源库,这些插件都在Nutch的plugins中,开发者在使用Nutch框架定制符合自己需求的插件,,比如:开发者可以选择不同的实现算法,寻找满足自己需要的最优解,也可以增加对不同格式文档的分析解压。

3.可维护性。每个开发者只需要关注自己需要关注的问题,如内核的开发者为引擎内核扩展时,只需添加一个描述它的接口;plugin的开发者只需关注这个plugin所要实现的功能,不需要完全了解整个系统工作的工作流程。仅仅需要知道plugin和plug之间交换的数据类型。这使得内核更加简单,也更容易维护。

插件机制在Nutch中的实现,是由Nutch框架提供的扩展点,为其增加一系列的扩展项,从而实现复杂的业务功能。

Nutch的爬虫属于普通的爬虫,这样的爬虫在工作的时候,首先要选好一定的URL集合作为一个起始队列。爬虫通过爬取、解析等过程,获取到网页上新的URL,并且把这些URL添加到队列之中,当第一轮抓取完成之后,就会继续以这些获取到的新的URL为起始地址,继续向深层次抓取,如此循环抓取,直到满足抓取停止的条件或者队列为空,爬虫才会停止工作。普通的爬虫一般会包括待爬行队列模块,获取网页模块,页面解析模块等。

与普通爬虫相比,主题爬虫一般会增加一个主题相关度判断的模块,也是主题爬虫的核心模块。该模块负责爬虫在抓取到网页之后,对网页的内容进行一次主题判断,如果判断结果为与主题相关或者相近,则该页面可以保留;若判断结果为该页面与主题无直接关系,则可以认为这个页面对于抓取后的操作意义不大,可以直接舍弃。由此可以推断出,抓取页面质量的优劣直接有主题爬虫设计的好坏决定,而主题爬虫好坏又直接受到主题相关度判断模块影响。

目前,主要的主题爬虫爬行策略有两种:一是广度优先搜索策略,二是最佳优先搜索策略。二者各有优点和缺点,很多时候都是结合着使用的。

广度优先搜索策略是一种图形搜索算法,在互联网上,网页与网页之间相联系是靠URL,假设通过页面A上的某一URL可以跳转到页面B,则可以认为页面A为上层,页面B为下层。广度优先搜索策略都是按照层次搜索的,总是优先搜索上层的结点,从根节点出发,逐层向下搜索新的与上层邻近的节点,网页的存在基本上就是被URL分成了层。

最佳优先搜索策略的实施与网页评分相关联。进行最佳优先搜索,要给每一个页面进行一个打分,分数的高低也直接决定了网页的优劣。网页抓取到之后,也会根据网页的分数的高低将网页放入队列,便于下一轮的抓取操作。该算法相较于广度优先搜索策略有一定的优势,但是也存在自身的缺点,就是网页的主题性往往是不连贯的,需要经过多层的网页也许才会到达另一个与主题相关的网页,这就产生了“隧道”现象。

下载本文
显示全文
专题