大数据爬虫技术有什么功能

麦地懒羊羊 2024-05-11 16:35:11
最佳回答
1、爬虫技术概述
网络爬虫(web crawler),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本,它们被广泛用于互联网搜索引擎或其他类似网站,可以自动采集所有其能够访问到的页面内容,以获取或更新这些网站的内容和检索方式。从功能上来讲,爬虫一般分为数据采集,处理,储存三个部分。传统爬虫从一个或若干初始网页的url开始,获得初始网页上的url,在抓取网页的过程中,不断从当前页面上抽取新的url放入队列,直到满足系统的一定停止条件。聚焦爬虫的工作流程较为复杂,需要根据一定的网页分析算法过滤与主题无关的链接,保留有用的链接并将其放入等待抓取的url队列。然后,它将根据一定的搜索策略从队列中选择下一步要抓取的网页url,并重复上述过程,直到达到系统的某一条件时停止。另外,所有被爬虫抓取的网页将会被系统存贮,进行一定的分析、过滤,并建立索引,以便之后的查询和检索;对于聚焦爬虫来说,这一过程所得到的分析结果还可能对以后的抓取过程给出反馈和指导。相对于通用网络爬虫,聚焦爬虫还需要解决三个主要问题:
(1)对抓取目标的描述或定义;(2)对网页或数据的分析与过滤;(3)对url的搜索策略。2、爬虫原理
2.1 网络爬虫原理
web网络爬虫系统的功能是下载网页数据,为搜索引擎系统提供数据来源。很多大型的网络搜索引擎系统都被称为基于 web数据采集的搜索引擎系统,比如 google、baidu。由此可见web 网络爬虫系统在搜索引擎中的重要性。网页中除了包含供用户阅读的文字信息外,还包含一些超链接信息。web网络爬虫系统正是通过网页中的超连接信息不断获得网络上的其它网页。正是因为这种采集过程像一个爬虫或者蜘蛛在网络上漫游,所以它才被称为网络爬虫系统或者网络蜘蛛系统,在英文中称为spider或者crawler。2.2 网络爬虫系统的工作原理
在网络爬虫的系统框架中,主过程由**,解析器,资源库三部分组成。**的主要工作是负责给多线程中的各个爬虫线程分配工作任务。解析器的主要工作是下载网页,进行页面的处理,主要是将一些js脚本标签、css代码内容、空格字符、html标签等内容处理掉,爬虫的基本工作是由解析器完成。资源库是用来存放下载到的网页资源,一般都采用大型的数据库存储,如oracle数据库,并对其建立索引。**
**是网络爬虫的***,它主要是负责根据系统传过来的url链接,分配一线程,然后启动线程调用爬虫爬取网页的过程。解析器
解析器是负责网络爬虫的主要部分,其负责的工作主要有:下载网页的功能,对网页的文本进行处理,如过滤功能,抽取特殊html标签的功能,分析数据功能。资源库
主要是用来存储网页中下载下来的数据记录的容器,并提供生成索引的目标源。中大型的数据库产品有:oracle、sql server等。web网络爬虫系统一般会选择一些比较重要的、出度(网页中链出超链接数)较大的网站的url作为种子url集合。网络爬虫系统以这些种子集合作为初始url,开始数据的抓取。因为网页中含有链接信息,通过已有网页的 url会得到一些新的 url,可以把网页之间的指向结构视为一个森林,每个种子url对应的网页是森林中的一棵树的根节点。这样,web网络爬虫系统就可以根据广度优先算法或者深度优先算法遍历所有的网页。由于深度优先搜索算法可能会使爬虫系统陷入一个网站内部,不利于搜索比较靠近网站首页的网页信息,因此一般采用广度优先搜索算法采集网页。web网络爬虫系统首先将种子url放入下载队列,然后简单地从队首取出一个url下载其对应的网页。得到网页的内容将其存储后,再经过解析网页中的链接信息可以得到一些新的url,将这些url加入下载队列。然后再取出一个url,对其对应的网页进行下载,然后再解析,如此反复进行,直到遍历了整个网络或者满足某种条件后才会停止下来。网络爬虫的基本工作流程如下:
1.首先选取一部分精心挑选的种子url;2.将这些url放入待抓取url队列;3.从待抓取url队列中取出待抓取在url,解析dns,并且得到主机的ip,并将url对应的网页下载下来,存储进已下载网页库中。此外,将这些url放进已抓取url队列;4.分析已抓取url队列中的url,分析其中的其他url,并且将url放入待抓取url队列,从而进入下一个循环。2.3 抓取策略
在爬虫系统中,待抓取url队列是很重要的一部分。待抓取url队列中的url以什么样的顺序排列也是一个很重要的问题,因为这涉及到先抓取那个页面,后抓取哪个页面。而决定这些url排列顺序的方法,叫做抓取策略。下面重点介绍几种常见的抓取策略:
2.3.1 深度优先遍历策略
深度优先遍历策略是指网络爬虫会从起始页开始,一个链接一个链接跟踪下去,处理完这条线路之后再转入下一个起始页,继续跟踪链接。我们以下面的图为例:
遍历的路径:a-f-g e-h-i b c d
2.3.2 宽度优先遍历策略
宽度优先遍历策略的基本思路是,将新下载网页中发现的链接直接*待抓取url队列的末尾。也就是指网络爬虫会先抓取起始网页中链接的所有网页,然后再选择其中的一个链接网页,继续抓取在此网页中链接的所有网页。还是以上面的图为例:
遍历路径:a-b-c-d-e-f g h i
2.3.3 反向链接数策略
反向链接数是指一个网页被其他网页链接指向的数量。反向链接数表示的是一个网页的内容受到其他人的推荐的程度。因此,很多时候搜索引擎的抓取系统会使用这个指标来评价网页的重要程度,从而决定不同网页的抓取先后顺序。在真实的网络环境中,由于广告链接、作弊链接的存在,反向链接数不能完全等他我那个也的重要程度。因此,搜索引擎往往考虑一些可靠的反向链接数。2.3.4 partial pagerank策略
partial pagerank算法借鉴了pagerank算法的思想:对于已经下载的网页,连同待抓取url队列中的url,形成网页集合,计算每个页面的pagerank值,计算完之后,将待抓取url队列中的url按照pagerank值的大小排列,并按照该顺序抓取页面。如果每次抓取一个页面,就重新计算pagerank值,一种折中方案是:每抓取k个页面后,重新计算一次pagerank值。但是这种情况还会有一个问题:对于已经下载下来的页面中分析出的链接,也就是我们之前提到的未知网页那一部分,暂时是没有pagerank值的。为了解决这个问题,会给这些页面一个临时的pagerank值:将这个网页所有入链传递进来的pagerank值进行汇总,这样就形成了该未知页面的pagerank值,从而参与排序。2.3.5 opic策略策略
该算法实际上也是对页面进行一个重要性打分。在算法开始前,给所有页面一个相同的初始现金(cash)。当下载了某个页面p之后,将p的现金分摊给所有从p中分析出的链接,并且将p的现金清空。对于待抓取url队列中的所有页面按照现金数进行排序。2.3.6 大站优先策略
对于待抓取url队列中的所有网页,根据所属的网站进行分类。对于待下载页面数多的网站,优先下载。这个策略也因此叫做大站优先策略。3、爬虫分类
开发网络爬虫应该选择nutch、crawler4j、webmagic、scrapy、webcollector还是其他的?上面说的爬虫,基本可以分3类:
(1)分布式爬虫:nutch
(2)j**a爬虫:crawler4j、webmagic、webcollector
(3)非j**a爬虫:scrapy(基于python语言开发)
3.1 分布式爬虫
爬虫使用分布式,主要是解决两个问题:
1)海量url管理
2)网速
现在比较流行的分布式爬虫,是apache的nutch。但是对于大多数用户来说,nutch是这几类爬虫里,最不好的选择,理由如下:
1)nutch是为搜索引擎设计的爬虫,大多数用户是需要一个做精准数据爬取(精抽取)的爬虫。nutch运行的一套流程里,有三分之二是为了搜索引擎而设计的。对精抽取没有太大的意义。也就是说,用nutch做数据抽取,会浪费很多的时间在不必要的计算上。而且如果你试图通过对nutch进行二次开发,来使得它适用于精抽取的业务,基本上就要破坏nutch的框架,把nutch改的面目全非,有修改nutch的能力,真的不如自己重新写一个分布式爬虫框架了。2)nutch依赖hadoop运行,hadoop本身会消耗很多的时间。如果集群机器数量较少,爬取速度反而不如单机爬虫快。3)nutch虽然有一套插件机制,而且作为亮点宣传。可以看到一些开源的nutch插件,提供精抽取的功能。但是开发过nutch插件的人都知道,nutch的插件系统有多蹩脚。利用反射的机制来加载和调用插件,使得程序的编写和调试都变得异常困难,更别说在上面开发一套复杂的精抽取系统了。而且nutch并没有为精抽取提供相应的插件挂载点。nutch的插件有只有五六个挂载点,而这五六个挂载点都是为了搜索引擎服务的,并没有为精抽取提供挂载点。大多数nutch的精抽取插件,都是挂载在“页面解析”(parser)这个挂载点的,这个挂载点其实是为了解析链接(为后续爬取提供url),以及为搜索引擎提供一些易抽取的网页信息(网页的meta信息、text文本)。4)用nutch进行爬虫的二次开发,爬虫的编写和调试所需的时间,往往是单机爬虫所需的十倍时间不止。了解nutch源码的学*成本很高,何况是要让一个团队的人都读懂nutch源码。调试过程中会出现除程序本身之外的各种问题(hadoop的问题、hbase的问题)。5)很多人说nutch2有gora,可以持久化数据到**ro文件、hbase、mysql等。很多人其实理解错了,这里说的持久化数据,是指将url信息(url管理所需要的数据)存放到**ro、hbase、mysql。并不是你要抽取的结构化数据。其实对大多数人来说,url信息存在哪里无所谓。6)nutch2的版本目前并不适合开发。官方现在稳定的nutch版本是nutch2.2.1,但是这个版本绑定了gora-0.3。如果想用hbase配合nutch(大多数人用nutch2就是为了用hbase),只能使用0.90版本左右的hbase,相应的就要将hadoop版本降到hadoop 0.2左右。而且nutch2的官方教程比较有误导作用,nutch2的教程有两个,分别是nutch1.x和nutch2.x,这个nutch2.x官网上写的是可以支持到hbase 0.94。但是实际上,这个nutch2.x的意思是nutch2.3之前、nutch2.2.1之后的一个版本,这个版本在官方的svn中不断更新。而且非常不稳定(一直在修改)。所以,如果你不是要做搜索引擎,尽量不要选择nutch作为爬虫。有些团队就喜欢跟风,非要选择nutch来开发精抽取的爬虫,其实是冲着nutch的名气,当然最后的结果往往是项目延期完成。如果你是要做搜索引擎,nutch1.x是一个非常好的选择。nutch1.x和solr或者es配合,就可以构成一套非常强大的搜索引擎了。如果非要用nutch2的话,建议等到nutch2.3发布再看。目前的nutch2是一个非常不稳定的版本。3.2 j**a爬虫
这里把j**a爬虫单独分为一类,是因为j**a在网络爬虫这块的生态圈是非常完善的。相关的资料也是最全的。这里可能有争议,我只是随便谈谈。其实开源网络爬虫(框架)的开发非常简单,难问题和复杂的问题都被以前的人解决了(比如dom树解析和定位、字符集检测、海量url去重),可以说是毫无技术含量。包括nutch,其实nutch的技术难点是开发hadoop,本身代码非常简单。网络爬虫从某种意义来说,类似遍历本机的文件,查找文件中的信息。没有任何难度可言。之所以选择开源爬虫框架,就是为了省事。比如爬虫的url管理、线程池之类的模块,谁都能做,但是要做稳定也是需要一段时间的调试和修改的。对于爬虫的功能来说。用户比较关心的问题往往是:
1)爬虫支持多线程么、爬虫能用代理么、爬虫会爬取重复数据么、爬虫能爬取js生成的信息么?不支持多线程、不支持代理、不能过滤重复url的,那都不叫开源爬虫,那叫循环执行http请求。能不能爬js生成的信息和爬虫本身没有太大关系。爬虫主要是负责遍历网站和下载页面。爬js生成的信息和网页信息抽取模块有关,往往需要通过模拟浏览器(htmlunit,selenium)来完成。这些模拟浏览器,往往需要耗费很多的时间来处理一个页面。所以一种策略就是,使用这些爬虫来遍历网站,遇到需要解析的页面,就将网页的相关信息提交给模拟浏览器,来完成js生成信息的抽取。2)爬虫可以爬取ajax信息么?网页上有一些异步加载的数据,爬取这些数据有两种方法:使用模拟浏览器(问题1中描述过了),或者分析ajax的http请求,自己生成ajax请求的url,获取返回的数据。如果是自己生成ajax请求,使用开源爬虫的意义在哪里?其实是要用开源爬虫的线程池和url管理功能(比如断点爬取)。如果我已经可以生成我所需要的ajax请求(列表),如何用这些爬虫来对这些请求进行爬取?爬虫往往都是设计成广度遍历或者深度遍历的**,去遍历静态或者动态页面。爬取ajax信息属于deep web(深网)的范畴,虽然大多数爬虫都不直接支持。但是也可以通过一些方法来完成。比如webcollector使用广度遍历来遍历网站。爬虫的第一轮爬取就是爬取种子集合(seeds)中的所有url... 20210311
汇率兑换计算器

类似问答
  • 有人有近几年卤虫卵及卤虫无节幼虫的市场价的数据没?
    • 2024-05-11 13:01:58
    • 提问者: @慧
    只知道卤虫卵,价格在12万元/吨左右
  • 爬虫用品品牌 爬虫网站
    • 2024-05-11 07:25:10
    • 提问者: 蛋打撕葱
    最著名的是zoomed hagen sudo crawlmiracle 爬行天下 北京cl 天津nill 东莞宝龙爬虫 差不多就这些 淘宝上也就是这些 还有其他的三无产品的品牌基本上无任何保证,1.zoomed是美国品牌被爬行天下代理的 这个你别想了价格超高 质量也很不错2.hagen是广州国智水族代理的他的货总是断断续续的说不准什么时候有什么时候没有 你想做代理都找不到人 3.sudo这个不用想...
  • 450t提梁机技术参数是什么?
    • 2024-05-11 20:26:11
    • 提问者: 轩轩手玩?爱玩
    展开全部450t提梁机技术参数:名称 规格 数量跨度 38000mm大梁底面标高 28000mm大梁顶面标高 31000mm主梁 79t 1副梁 79t 1刚性支腿 75t 1柔性支腿 52t 1小车架与滑轮组 24t卷扬机 24t 4整车重量 404t 1提梁机:提梁机是一种为桥梁建设而专门设计的一种门式起重机。提梁机主要由拼装式主梁、支腿、天车等组成,构件间采用销轴及高强螺栓连接,易于拆装、运...
  • 肋骨固定板产品技术要求依据标准是什么?
    • 2024-05-11 16:58:30
    • 提问者: 很虚伪的笑、
    报告目录(部分):第一章 肋骨固定板概述 第一节肋骨固定板定义 第二节肋骨固定板行业发展历程 第三节肋骨固定板市场发展概况 第四节肋骨固定板产业链分析 一、产业链模型介绍 二、肋骨固定板产业链模型分析 第二章2009-2014年**肋骨固定板行业发展环境分析 第一节2009-2014年**经济环境分析 一、宏观经济 二、工业形势 三、固定资产投资 第二节肋骨固定板行业相关政策 一、**“十二五”产...
  • 什么叫“禁止非法爬虫访问! "?
    • 2024-05-11 14:08:41
    • 提问者: 补脑夜宵
    apache和php都可以从报头里获得蜘蛛名称,详细操作可以里面找找,有很多的。
  • 6204轴承技术参数
    • 2024-05-11 10:48:47
    • 提问者: 默念他
    有一个小程序,轴承库,公众号全名为【优感设备诊断中心】点击轴承库,结合了skf、fag、nsk三大厂商的所有轴承库型号,参数,含内圈、滚动体、外圈和保持架的参数,算出他们的特征频率,可以提供设备诊断师,诊断设备故障,很有用,建议试试。
  • 石爬子的养殖技术有谁能告诉我技术
    • 2024-05-11 03:43:57
    • 提问者: 就是2hy
    上面的朋友说得挺好的,建议采纳,如果觉得不够详细,我这里还有专业的技术光盘
  • 官园花鸟鱼虫市场,爬虫饲养箱大概什么价位?
    • 2024-05-11 10:56:30
    • 提问者: 善变的迟钝君
    不知道楼主养的什么宠物不同的宠物饲养箱也有区别不过按楼主提供的标箱尺寸木制的箱子在百元左右也有品牌的,价格高很多 200-400不等
  • 滚筒筛的技术参数
    • 2024-05-11 06:57:55
    • 提问者: 彩云
    滚筒筛型 号 小时处理量(m3/h) 外筛直径(mm) 长度(mm) 功率(kw) 外形尺寸(mm) 滚筒筛gs1230 20-50 φ1200 3000 3 3580×1590×1675 滚筒筛gs1530 40-80 φ1500 3000 5.5 3980×1790×1975 滚筒筛gs1830 80-150 φ1800 3000 7.5 4150...
  • 拼多多数据软件店霸为什么比其他数据软件更贵?感觉功能都差不多啊
    • 2024-05-11 18:51:18
    • 提问者: 整路人王
    店霸的数据是全类目的,付费购买功能的同时还有丰富的资源对接,导师1对1运营指导服务, 推手资源等等
汇率兑换计算器

热门推荐
热门问答
最新问答
推荐问答
新手帮助
常见问题
房贷计算器-九子财经 | 备案号: 桂ICP备19010581号-1 商务联系 企鹅:2790-680461

特别声明:本网为公益网站,人人都可发布,所有内容为会员自行上传发布",本站不承担任何法律责任,如内容有该作者著作权或违规内容,请联系我们清空删除。