当前位置: 首页 > 科技观察

没有爬虫,就没有今天的搜索引擎

时间:2023-03-20 17:49:39 科技观察

在当今的信息化和数字化时代,人们离不开在线搜索,但想想看,在搜索过程中你真的可以得到相关的信息,因为有人在帮你过滤并向您呈现相关内容。就像在餐馆里,你点了土豆并拿到了,因为有人帮你在土豆、萝卜、西红柿等中找到了它们,有人把它们带到了你的餐桌上。在网上,这两个动作是一个叫爬虫的同学帮你实现的。也就是说,没有爬虫,就没有今天的检索,就无法准确地找到信息,也无法有效地获取数据。今天DataHunter就来聊一聊爬虫在数据分析领域的应用,以及它如何帮助我们提高数据分析的质量。1、数据化时代,爬虫的本质是提高效率。网络爬虫又称网络机器人,可以代替人自动浏览网络中的信息,收集整理数据。它是一个程序,其基本原理是向网站/网络发起请求,获取资源后分析并提取有用的数据。从技术角度来说,就是通过程序模拟浏览器请求站点的行为,将站点返回的HTML代码/JSON数据/二进制数据(图片、视频)抓取到本地,然后提取您需要的数据,并将其存储以备使用。每个程序都有自己的规则,网络爬虫也不例外。它穿梭于世界各地的各种网站中,按照人们制定的规则收集信息。我们称这些规则为网络爬虫算法。规则是人定的,人根据自己的目的和需要设计的。因此,根据用户的目的,爬虫可以有不同的功能。但所有爬虫的本质都是为了方便人们在海量的互联网信息中找到并下载自己想要的东西,提高信息获取的效率。二、爬虫的应用:搜索,帮助企业加强业务1、搜索引擎:爬取站点,为网络用户提供便利在网络发展之初,能够提供全球信息的网站并不多,有用户不多。Internet只是文件传输协议(FTP)站点的集合,用户可以浏览这些站点以查找特定的共享文件,并查找和组合Internet上可用的分布式数据,人们创建了一个称为网络爬虫/机器人的自动化程序,它可以抓取互联网上的所有网页,然后将所有网页上的内容复制到数据库中进行索引。这也是最早的搜索引擎。如今,随着互联网的飞速发展,我们可以在任何一个搜索引擎中看到来自全球各个网站的信息。百度搜索引擎的爬虫叫百度蜘蛛(Baiduspider),360的爬虫叫360Spider,搜狗的爬虫叫Sogouspider,必应的爬虫叫Bingbot。搜索引擎离不开爬虫。例如,百度蜘蛛每天都会抓取海量的互联网信息,抓取并收集优质信息。当用户在百度搜索引擎上搜索相应的关键词时,百度会对关键词进行分析处理,从收录的网页中找出相关的网页,按照一定的排名规则进行排序,并将结果展示给用户。工作原理如图所示。现在,我们可以大胆地说,你每天都在免费享受爬虫带来的好处。2、企业:舆情监测,高效获取有价值的信息。我们说过,爬虫的本质是提高效率,爬虫的规则是人定的;那么企业就可以根据自己的业务需求设计一个爬虫,马上搞定。对互联网上与其相关的信息进行清理整合。大数据时代要分析数据,首先要有数据源,而网络爬虫让我们在根据自己的目的进行采集的同时,可以获取更多的数据源,从而去除大量不相关的数据。例如,在进行大数据分析或数据挖掘时,数据来源可以从某些提供数据统计的网站,或从某些文献或内部资料中获取。但是这些获取数据的方式有时很难满足我们对数据的需求。这时候,我们就可以利用爬虫技术,从互联网上自动获取更多我们感兴趣的数据内容,从而进行更深入的数据分析,获取更多有价值的信息。此外,网络爬虫还可以用于财务分析,收集财务数据进行投资分析;可应用于舆情监测分析、目标客户精准营销等各个领域。三、企业常用的4种网络爬虫网络爬虫根据实现的技术和结构可分为通用网络爬虫、重点网络爬虫、增量网络爬虫、深度网络爬虫等类型。然而,由于网络环境复杂,实际的网络爬虫通常是这几种爬虫的组合。1.通用网络爬虫通用网络爬虫也称为全网爬虫。顾名思义,要爬取的目标资源在整个互联网中,要爬取的目标数据非常庞大,爬取的范围也非常大。正是因为它爬取的数据是海量的,所以对于这类爬虫来说,对于爬取的性能要求是非常高的。这种网络爬虫主要用于大型搜索引擎,具有非常高的应用价值。一般的网络爬虫主要由初始URL采集、URL队列、页面抓取模块、页面分析模块、页面数据库、链接过滤模块等组成。一般的网络爬虫在爬取时都会采用一定的爬取策略,主要包括深度优先爬取策略和广度优先爬取策略。具体内容稍后介绍。2.聚焦网络爬虫聚焦网络爬虫也称为主题网络爬虫,是一种根据预先定义的主题有选择地爬取网页的爬虫。有针对性的网络爬虫主要用于特定信息的爬取,主要为特定人群提供服务。聚焦网络爬虫还由初始URL采集、URL队列、页面爬取模块、页面分析模块、页面数据库、链接过滤模块、内容评估模块、链接评估模块等组成。内容评估模块和链接评估模块可以根据链接和内容的重要性来确定优先访问哪些页面。FocusedWebCrawler主要有四种爬取策略,如图:具有很强的实用性。下面我们以聚焦网络爬虫为例,了解爬虫运行的工作原理和过程。如图所示,focused网络爬虫有一个控制中心,负责管理和监控整个爬虫系统,主要包括控制用户交互、初始化爬虫、确定主题、协调模块之间的工作、控制爬虫流程等:(1)控制中心将初始的URL集合传给URL队列,页面抓取模块从URL队列中读取第一批URL列表;(2)根据这些URL地址从互联网上抓取相应的页面;抓取完成后,将抓取的内容传输到页面数据库中存储;(3)在抓取过程中,会抓取一些新的URL。这时候就需要使用链接过滤模块过滤掉不相关的Links,然后使用链接评估模块或者内容评估模块根据主题对剩余的URL链接进行优先级排序。完成后,将新的URL地址传递给URL队列,供页面抓取模块使用;(4)页面爬取到页面数据库后,需要使用页面分析模块,根据主题处理对爬取到的页面进行页面分析,并根据处理结果建立索引数据库。用户在检索到相应的信息时,可以从索引数据库中进行相应的搜索,得到相应的结果。3、增量网络爬虫这里的“增量”对应的是增量更新,增量更新是指更新时只更新变化的地方,没有变化的地方不更新。增量式网络爬虫,在爬取网页时,只爬取内容发生变化的网页或新生成的网页,不会爬取内容未发生变化的网页。增量网络爬虫可以在一定程度上保证爬取的页面尽可能的新。4.深层网络爬虫在互联网中,网页按其存在方式可分为表层页面和深层页面。表层页面是指无需提交表单,使用静态链接即可到达的静态页面;而深层页面是提交特定关键字后才能获得的页面。在互联网中,深层页面的数量往往远远多于表层页面的数量。深网爬虫可以爬取互联网中的深层页面,而要爬取深层页面,就需要想办法自动填写相应的表格。深网爬虫主要由URL列表、LVS列表(LVS是指标签/值集合,即填写表单的数据源)、爬虫控制器、解析器、LVS控制器、表单分析器、表单处理器、响应分析器组成和其他部分。4.网络爬虫的爬行策略前面说过,网络爬虫算法是根据人们设定的规则来收集信息的,由于网络环境的复杂性,相应的也有各种各样的算法,即爬虫策略。这里主要介绍爬取的顺序和频率。1.爬取顺序在网络爬虫爬取的过程中,可能会在正在爬取的URL列表中有很多个URL地址,所以爬虫是按照顺序来爬取这些URL地址的。与一般的网络爬虫相比,爬虫的顺序并不那么重要。但专注于网络爬虫,爬取的顺序与服务器资源和宽带资源有关,因此非常重要,一般由爬取策略决定。爬虫策略主要有深度优先爬虫策略、广度优先爬虫策略、大站优先策略、反链策略等爬虫策略。如图所示,假设有一个网站,ABCDEFG分别是该网站下的网页,如图所示代表网页的层级结构。如果此时网页ABCDEFG都在爬取队列中,那么根据不同的爬取策略,爬取的顺序是不同的。深度优先爬取策略:A→D→E→B→C→F→G广度优先爬取策略:A→B→C→D→E→F→G除以上两种爬取策略外,大站还可以也可以使用抓取策略。可以根据对应网页所属的站点进行分类。如果某个网站的网页数量很多,就称为大网站。按照这个策略,网页多的网站就越大,然后在大网站中优先爬取。网页的URL地址。此外,还有一种反链接策略。一个网页的反向链接数是指该网页被其他网页指向的次数。这个数字在一定程度上代表了该网页被其他网页推荐的次数。因此,如果按照反链接策略进行爬取,哪个网页的反链接多,就先爬取哪个网页。但是,在实际情况中,如果简单地根据反链策略来确定网页的优先级,那么可能会出现大量的作弊行为。因此,使用反向链接策略需要考虑可靠反向链的数量。除了上述爬取策略外,在实践中还有很多其他的爬取策略,如OPIC策略、PartialPageRank策略等。2.爬取频率一个网站的网页更新频率很高。作为爬虫,网站的更新频率越接近爬虫访问网站的频率,效果越好。当然,当爬虫服务器的资源有限时,爬虫也需要根据相应的策略让不同的网页有不同的更新优先级,优先级高的网页更新会得到更快的爬取响应。常见的网页更新策略主要有以下三种:(1)用户体验策略:大部分用户在使用搜索引擎查询某个关键词时,只关注排名靠前的网页。在某些情况下,爬虫会优先更新排名最高的网页。(2)历史数据策略:是指通过泊松过程建模等手段,根据某个网页的历史更新数据,预测该网页下次更新时间的可能性,从而确定下一次抓取该网页的时间。(3)聚类分析策略:网页可能有不同的内容,但一般来说,属性相似的网页更新频率相似,因此可以对大量网页进行聚类分析。聚类完成后,可以根据同一个Type页面的平均更新值来设置抓取的频率。5.网络爬虫的实现技术对于实现技术,本文不做展开,仅提供几种常用语言给感兴趣的同学:Python、Java、PHP、Node.JS、C++、Go语言(另外,网络爬虫语言的开发等等)。Python:爬虫框架非常丰富,多线程处理能力强,简单易学,代码简洁,优点多多。Java:适合开发大型爬虫项目。PHP:后端处理很强,代码很简洁,模块也很丰富,但是并发能力比较弱。Node.JS:支持高并发和多线程处理。C++:运行速度快,适合开发大型爬虫项目,但成本相对较高。Go语言:同样是高并发能力很强。6.总结说到爬虫,很多人认为它是网络世界中无法回避的灰色地带。恭喜你,看完这篇文章,你比很多人都更了解这一点。因为爬虫分为良性爬虫和恶意爬虫,比如搜索引擎的爬虫。仁慈爬虫严格遵守Robots协议爬取网页数据(如URL),它的存在可以增加网站的曝光度,为网站带来流量;而恶意爬虫,则无视Robots协议,爬取一些深层次的、不愿公开的数据,大肆爬取,包括个人隐私或商业机密等重要信息。而恶意爬虫的使用者希望从网站上多次、大量获取信息,因此通常会向目标网站发送大量的爬虫。如果大量爬虫同时访问网站,很容易造成网站服务器过载或崩溃,给网站运营者造成损失。据统计,2017年我国42.2%的互联网流量是由网络机器人创造的,其中恶意机器(主要是恶意爬虫)流量占比21.80%。依法合理使用网络爬虫,才能用科技为企业带来长远发展,用科学为社会创造更高的价值。