搜索引擎如何抓取网页(互联网信息爆发式增长,如何有效的获取并利用这些信息)
优采云 发布时间: 2021-11-18 15:19搜索引擎如何抓取网页(互联网信息爆发式增长,如何有效的获取并利用这些信息)
随着互联网信息的爆炸式增长,如何有效地获取和使用这些信息是搜索引擎工作的首要环节。数据采集系统作为整个搜索系统的上游,主要负责互联网信息的采集、保存和更新。它像蜘蛛一样在网络中四处爬行,所以通常被称为蜘蛛。比如我们常用的几种常见的搜索引擎蜘蛛,叫做Baiduspdier、Googlebot、搜狗网蜘蛛等。
百度蜘蛛爬虫系统是搜索引擎数据来源的重要保障。如果将万维网(Web)理解为一个有向图,那么Spider的工作过程可以认为是对这个有向图的遍历。从一些重要的*敏*感*词*统一资源定位器(URL)开始,通过页面上的超链接关系,不断地发现和爬取新的URL,尽可能爬取更多有价值的网页。对于像百度这样的大型蜘蛛系统,由于网页随时可能被修改、删除,或者新的超链接可能出现,所以需要更新蜘蛛过去抓取的页面,并维护一个URL库和页面库。
一、百度蜘蛛抓取系统基本框架
以下是Baiduspdier爬取系统的基本框架图,包括链接存储系统、链接选择系统、DNS解析服务系统、爬取调度系统、网页分析系统、链接提取系统、链接分析系统、网页存储系统。
二、爬虫过程中涉及的baiduspdier网络协议
搜索引擎和资源提供者之间存在相互依赖的关系。搜索引擎需要站长为其提供资源,否则搜索引擎将无法满足用户的检索需求;而网站站长则需要借助搜索引擎将自己的内容进行推广,以获得更多的受众。百度蜘蛛爬虫系统直接涉及到互联网资源提供者的利益。为了实现搜索引擎和网站站长的双赢,双方在爬取过程中必须遵守一定的规则,以方便双方的数据处理和连接。在这个过程中遵循的规范就是我们在日常生活中所说的一些网络协议。以下是一个简要列表:
超文本传输协议 (HTTP):Internet 上使用最广泛的网络协议,是客户端和服务器请求和响应的标准。客户端一般指最终用户,服务器指网站。最终用户通过浏览器、蜘蛛等方式向服务器的指定端口发送HTTP请求,发送HTTP请求会返回相应的HTTP Header信息,可以看出是否成功、服务器类型、网页的最后更新时间。
基于安全套接字层的超文本传输协议 (HTTPS):它实际上是 HTTP 的加密版本,是一种更安全的数据传输协议。
UA属性:UA,即user-agent,是HTTP协议中的一个属性。它代表终端的身份并向服务器显示我在做什么。然后服务器可以根据不同的身份做出不同的反馈结果。
Robots协议:robots.txt是搜索引擎访问网站时首先访问的文件。用于确定哪些允许爬取,哪些禁止爬取。robots.txt必须放在网站的根目录下,文件名必须小写。有关 robots.txt 的详细编写,请参阅 The Web Robots Pages。百度严格执行机器人协议。此外,它还支持在网页内容中添加名为robots、index、follow、nofollow等指令的meta标签。
三、百度spdier爬取的基本流程
百度spdier的基本爬取过程可以理解为如下流程图:
四、baiduspdier在爬取过程中的策略
百度spdier在爬取过程中面临着复杂的网络环境,为了让系统能够抓取尽可能多的有价值的资源,在不给网站带来压力的情况下,在实际环境中保持系统和页面的一致性经验,会设计各种复杂的爬取策略。
4.1 爬行友好度
互联网资源的巨大数量级要求抓取系统尽可能高效地使用带宽,在有限的硬件和带宽资源下抓取尽可能多的有价值的资源。这就产生了另一个问题。捕获的网站消耗的带宽造成访问压力。如果级别过大,将直接影响捕获到的网站的正常用户访问行为。因此,在爬取过程中,必须控制一定的爬取压力,以达到不影响网站的正常用户访问,尽可能多的抓取有价值资源的目的。一般情况下,最基本的是基于IP的压力控制。这是因为如果它是基于域名的,可能存在一个域名对应多个IP(很多大网站)或多个域对应同一个IP(小网站共享IP)的问题。在实践中,压力部署控制往往是根据IP和域名的各种情况进行的。同时,站长平台也推出了压力反馈工具。站长可以手动调整他的网站的抓取压力。此时,百度spdier会根据网站站长的要求,优先进行抓取压力控制。同一站点的爬行速度控制一般分为两类:一是一段时间内的爬行频率;二是一段时间内的爬取流量。同一个站点的爬取速度在不同的时间会有所不同。例如,当时的抓取速度可能会更快,这取决于具体的站点类型。主要思想是错开正常用户访问的高峰期,不断调整。对于不同的站点,也需要不同的爬取速度。
4.2普通抓取返回码
百度支持的常见返回码:
1)404 错误表示“未找到”。认为该网页无效,通常会从库中删除。同时,如果Baiduspdier在短期内再次找到该网址,则不会被抓取;
2)503 错误表示“服务不可用”。据信该网页暂时无法访问。通常网站暂时关闭,带宽受限等都会造成这种情况。对于网页返回的503状态码,百度spdier不会直接删除网址。同时,它会在短时间内多次重复访问。如果网页已经恢复,就可以正常抓取了。如果继续返回503,那么这个URL仍然会被认为是无效链接,会从库中删除。
3)403 Forbidden 的意思是“被禁止”,认为该网页当前被禁止。如果是新的URL,Baiduspdier暂时不会抓取,短时间内会被多次访问;如果是已经收录的URL,则不会直接删除,短时间内会被多次访问。如果网页访问正常,就会正常抓取;如果仍然禁止访问,则此 URL 也将被视为无效链接,并将从库中删除。
4)301重定向代表“Moved Permanently”,认为网页被重定向到新的url。遇到网站迁移、域名更换、网站改版时,建议使用301返回码,并使用站长平台网站改版工具,减少改版带来的网站流量损失。
4.3 多个URL重定向的识别
由于各种原因,Internet 上的某些网页具有 URL 重定向状态。为了正常抓取这些资源,需要百度spdier对URL重定向进行识别和判断,防止作弊。重定向可以分为三类:HTTP 30x 重定向、元刷新重定向和 JavaScript 重定向。此外,百度还支持Canonical标签,可以看作是一种间接重定向的效果。
4.4 抢优先分配
由于互联网资源规模的巨大而快速的变化,搜索引擎几乎不可能全部捕获并合理更新以保持一致性。这就需要爬取系统设计一套合理的爬取优先级。部署策略。主要包括:深度优先遍历策略、广度优先遍历策略、Google Page Rank(PR)优先策略、反链策略、社交分享引导策略等,每种策略各有优缺点。在实际情况中,往往会采用多种策略组合使用,以达到最佳的捕捉效果。
4.5 重复 URL 过滤
在爬取过程中,Baiduspdier 需要判断一个页面是否被爬取过,如果没有被爬取过,那么它会爬取该网页并将其放入爬取过的URL集合中。判断是否被爬取的核心是快速搜索对比,还涉及到URL归一化识别。例如,如果一个 URL 收录大量无效参数,但实际上是同一个页面,它将被视为相同的 URL。
4.6 暗网数据的获取
互联网上存在大量搜索引擎暂时无法捕获的数据,称为暗网。一方面,网站的大量数据存在于网络数据库中,百度Spdier难以通过抓取网页获取完整内容;另一方面,由于网络环境的原因,网站本身不符合规范,被隔离。依此类推,也会导致搜索引擎无法抓取。目前暗网数据获取的主要思路仍然是利用开放平台解决数据提交问题,如百度资源搜索平台:、百度数据开放平台:/、百度移动开放平台:、百度AI开放平台:、百度地图开放平台:等。
4.7 抓包反作弊
在爬取过程中,Baiduspdier经常会遇到所谓的爬取黑洞或者大量低质量页面的烦恼,这就需要爬取系统还要设计一个完整的爬取防作弊系统。比如分析URL特征,分析页面大小和内容,分析爬取规模对应的站点规模等等。
五、百度百科检索系统
百度spdier检索系统主要包括五个部分:
1)查询字符串分词就是对用户的查询词进行切分,为后续的查询做准备。以“地铁10号线故障”为例,可能的切分如下(同义词问题暂时略过):
10:0x123abc
编号:0x13445d
行:0x234d
地铁:0x145cf
失败:0x354df
2) 找出收录每个term的文档集合,即找到候选集合,如下:
0x123abc 1 2 3 4 7 9 .....
0x13445d 2 5 8 9 10 11……
...
3) 求交际,上面的交际,文件2和文件9可能就是我们需要找的,整个交际过程其实是关系到整个系统的性能,包括使用缓存等手段优化性能;
4) 各种过滤,例子可能包括过滤掉死链接、重复数据、*敏*感*词*、垃圾结果,以及你所知道的;
5)最终排名,将最符合用户需求的结果排在第一位,可能收录以下有用信息:网站的综合评价、网页质量、内容质量、资源质量、匹配度、以及分散程度、及时性等。