网页qq抓取什么原理(一般来说自己网站被其他网站引用最多的页面就是首页是什么)

优采云 发布时间: 2021-10-20 08:13

  网页qq抓取什么原理(一般来说自己网站被其他网站引用最多的页面就是首页是什么)

  一般来说,自己网站被其他网站引用次数最多的页面就是首页,所以相比之下它的权重最高。比如页面A是A网站的首页,可以得到结论是从页面A更高级的页面拥有更高的页面权重。比如页面A的超链接更容易被蜘蛛抓取,也更容易被蜘蛛抓取。未被蜘蛛发现的网页权重更大。自然是0。

  还有一点很重要,蜘蛛在爬取页面时会进行一定程度的复制检测,即当前爬取的页面内容是否与保存的数据重叠(当页面内容被转载/不当抄袭时)被蜘蛛检测到),如果在一个非常低的权重网站上有很多转贴/抄袭,蜘蛛可能不会继续爬行。

  这样做的原因是为了用户的体验。如果没有这些去重步骤,当用户想要搜索某些内容时,发现返回的结果都是一模一样的内容,这会极大地影响用户的体验。最终的结果是这个搜索引擎永远不会用了,所以为了方便用户,也是为了公司的正常发展。

  地址库

  互联网上有很多网页。搜索引擎为了避免重复抓取和抓取网页,会建立地址数据库。一个用于记录已发现但未爬取的页面,另一个是已爬取的页面。

  要访问的地址库中的地址(已发现但未爬取)来自以下方法:

  1. 手动输入地址

  2. 蜘蛛抓取页面后,从HTML代码中获取新的链接地址,并与两个地址库中的数据进行比较。如果没有,则将该地址存储在要访问的地址库中。

  3.站长(网站负责人)提交您希望搜索引擎抓取的页面。(一般这个效果不是很大)

  蜘蛛根据重要性从待访问地址库中提取URL,访问并抓取页面,然后从待访问地址库中删除该URL地址并放入访问地址库中。

  文件存储

  蜘蛛会将抓取到的数据保存到原创页面数据库中。

  存储的数据与服务器返回给蜘蛛的 HTML 内容相同。每个页面在存储在数据库中时都有自己唯一的文件编号。

  预处理

  当我们去商场买菜的时候,我们会看到蔬菜保险箱里的蔬菜摆放的很整齐。这里给出的例子是用保鲜膜包裹的蔬菜。

  

  最后呈现给客户的是上图。包装完好,按分类摆放整齐。顾客可以一目了然地看到每个区域有什么蔬菜。

  在最终确定这个结果之前,整个过程大概是三个步骤:

  1.选择可以卖的蔬菜

  从一堆蔬菜中,选择可以出售的蔬菜。

  2.预处理

  此时,您拥有所有可以出售的蔬菜。但是如果你今天要把这些蔬菜放进蔬菜保险箱里,如果你今天开始整理这些蔬菜(因为蔬菜被打包等),你会浪费很多时间,可能是顾客还没有安排蔬菜。

  所以你的解决方案是将可以提前销售的蔬菜打包存放在仓库中。当保险箱里的蔬菜丢失需要补货时,花几分钟时间去仓库取出蔬菜。把它放在架子上就行了。(我猜想,不知道具体商场里的流程是怎样的,为了方便后续理解,最好用生活实例来说明效果)

  3.放置保险箱

  如上最后一段,当需要补货时,将包装好的蔬菜从仓库中取出,并根据蔬菜种类放置在合适的位置。这是最后的排序步骤。

  回到搜索引擎的工作流程,这个预处理步骤和上面的商城预处理步骤效果一样。

  当蜘蛛完成数据采集后,就会进入这一步。

  蜘蛛所做的工作是在采集数据后将数据(HTML)存储在原创页面数据库中。

  而这些数据并不是用户搜索后直接用于排序并显示在搜索结果页面上的数据。

  原创页面数据库中的页面数在万亿以上。如果用户搜索后对原页面数据库中的数据进行实时排序,则排名程序(每一步使用的程序不同,采集数据的程序称为spider,用于排名的程序为排名程序)analyze每个页面数据与用户想要搜索的内容之间的相关性,计算量太大,会浪费太多时间,不可能在一两秒内返回排名结果。

  因此,我们需要对原创页面数据库中的数据进行预处理,为最终的排名做准备。

  提取文本

  我们在原创页面数据库中存储的是HTML代码,HTML代码不仅收录用户在页面上可以直接看到的文本内容,还收录其他搜索引擎无法使用的内容,如js、AJAX、等等。 。

  首先要做的是从 HTML 文件中移除这些无法解析的内容,并提取出可用于排名处理步骤的文本内容。

  例如,下面的代码

  软件工程师需要知道的搜索引擎知识

  MathJax.Hub.Config({

  showProcessingMessages: 假,

  messageStyle: "无",

  tex2jax:{

  inlineMath: [['$','$'], ['(',')']],

  displayMath: [["$$","$$"] ],

  skipTags: ['','no','style','textarea','pre','code','a']

  }

  });

  MathJax.Hub.Register.MessageHook("End Process", function (message) {

  var eve = new Event('mathjaxfini')

  window.dispatchEvent(eve)

  })

  你好

  可以看出,在整个HTML中,真正属于文本内容的信息只有两句。

  这是说明

  软件工程师需要知道的搜索引擎知识

  你好

  谷歌

  搜索引擎最终提取的信息就是这四个句子,用于排名的词也是这四个句子。

  可以提取的文本内容大概是Meta标签中的文本、img标签的alt属性中的文本、Flash文件的替代文本、链接锚文本等。

  中文分词

  分词是中文搜索引擎独有的一步。搜索引擎根据单词存储/处理页面/用户搜索。

  我很好,你呢?

  汉语和英语等语言词是不同的。使用英语时,每个单词都会用空格隔开。搜索引擎可以直接将每个句子分成多个英文单词的集合。对于中文来说,词汇和词汇之间没有分隔符来分隔各个词汇。

  例如,这句话中的词是连在一起的

  在这种情况下,搜索引擎首先需要区分哪些字符构成一个词,比如我喜欢吃[水果],或者哪些字符本身就是一个词,比如[水],

  再次喜欢下面的句子

  您好,这是一篇关于搜索引擎的文章文章

  搜索引擎会把这段文字拆解成一个词汇表,大概如下

  你好

  这是

  一种

  关于

  搜索引擎

  的

  文章

  搜索引擎把这段文字拆解成7个词汇(我猜的,不知道有多少,每个搜索引擎的分词方法都不一样)

  中文分词基本上有两种方式:

  1.字典匹配

  将一个待分析的汉字与一次创建的字典中的一个词条进行匹配。如果在该段汉字中扫描到字典中已有的词条,则匹配成功。

  这种匹配方法是最简单的,但是匹配的正确过程取决于字典的完整性和更新程度。

  2.基于统计

  它通常通过机器学习来完成。通过分析大量网页上的文本样本,计算出单词相邻出现的统计概率。相邻的单词越多,形成单词的可能性就越大。

  这个优点是它对新词的反应更快。

  实际使用中的分词系统是两种方法同时混合使用。

  去停词

  不管是英文还是中文,都会有一些经常出现在页面上且对内容没有影响的词,比如中文的[的]、[啊]、[哈]等。这些词是称为停用词。

  英语中常见的停用词有[the]/[a]/[an]等。

  搜索引擎会去掉这些停用词,使数据主题更加突出,减少不必要的计算。

  去除干扰词

  大多数页面都有这样一部分对页面主题贡献不大的内容。比如页面A的内容是一篇关于SEO优化的文章文章,关键词是SEO,但是除了说明SEO内容的主要内容之外,这两个部分一起构成了这个页面也是区域例如页眉、页脚、广告等。

  

  这些部分出现的词可能与页面内容本身的关键词无关。

  例如,[history] ​​这个词是如何出现在导航栏中的?你想在导航栏上表达的其实是历史记录。搜索引擎可能会将他误认为XX国史、XX时代史等。 【历史】搜索引擎理解的内容与页面内容想要表达的内容完全无关,所以这些区域都是噪音。搜索引擎在分析页面时,只会对页面的主题起到分散注意力的作用。

  搜索引擎的排名程序在对数据进行排名时不能参考这些噪音内容。我们需要在预处理阶段隔离这些噪声并消除它们。

  消除噪音的方法是将页面按照HTML标签划分成块,比如header标签、footer标签等,去掉这些区域后,剩下的就是页面的主要内容了。

  重复数据删除

  去除重复的方法是先选择页面主要内容中最具代表性的部分关键词(往往是出现频率最高的关键词。由于之前有去除停用词的步骤,所以这里出现频率最高的关键词可能真的是整个页面的关键词),然后计算这些关键词的数字指纹。

  通常我们在页面上选择10个关键词来达到比较高的计算精度。

  典型的指纹计算方法是MD5算法(信息摘要算法第五版)。这类指纹算法的特点是只要输入(也就是上面提取的关键词)有任何细微的变化,计算出来的指纹就会有很大的差距。

  例如,如果我们将两个数相乘,第一组和第二组的差别只是第一个数0.001的差别,但最终生成的结果却相差很大。

  

  了解了搜索引擎的去重算法后,你会发现文章发布者眼中原创的内容对于搜索引擎来说其实是非原创的,比如简单的添加/删除[of][地]等停止词、改变段落顺序、混合不同的文章等操作,搜索引擎执行去重算法后,都会被判断为非-原创的内容,因为这些操作不会改变文章的关键词。

  (比如我写的这篇笔记中的一些段落是“借用”的,我是从书上看的,而不是直接在网页上浏览。如果搜索引擎从我的文章中提取文本文章,分词,去噪,和去重,发现剩下的关键词与某一个已经收录的网页数据的内容相匹配,我会认为我是伪原创甚至非原创@ >,最终影响的是我在文章搜索引擎工作原理上的排名关键词)

  远期指数

  前向索引可以简称为索引。

  经过上述步骤(提取、分词、去噪、去重),搜索引擎最终得到唯一的、能够反映页面主要内容的基于词的内容。

  接下来,搜索引擎的索引程序提取关键词,根据分词程序,将页面转换成一组关键词,还需要记录每一个关键词的Frequency,页面上出现的次数、格式(如标题标签、粗体、h 标签、锚文本等)和位置(如页面的第一段等)。

  搜索引擎的索引程序将页面和关键词形成的词汇结构存储到索引数据库中。

  索引词表的简化形式如图

  

  每个文件对应一个文件ID,文件内容用一组关键词表示。

  事实上,在搜索引擎索引库中,关键词也被转换为关键词 ID。这种数据结构称为前向索引。

  倒排索引

  前向索引不能直接用于排名。假设用户搜索关键词[2],如果只有前向索引,排序程序需要扫描索引库中的所有文件,找出其中收录关键词[2],然后计算相关性。

  这个计算量不能满足实时返回排名结果的要求。

  我们可以预先对所有关键词进行分类,搜索引擎会将正向索引数据库重构为倒排索引,将文件到关键词的映射转换为关键词到文件,如下图

  

  在倒排索引中,关键词为主键,每个关键词对应一系列文件。例如,上图中第一行右侧显示的文件都收录关键词1个文档。

  这样,当用户搜索某个关键词时,排序程序在倒排索引中定位到这个关键词,可以立即找到收录这个关键词的所有文件。

  对搜索结果进行排名

  前一个蜘蛛抓取页面后,数据预处理&索引程序计算倒排索引,搜索引擎随时准备处理用户搜索。

  用户在搜索框中输入想要查询的内容后,排名程序调用索引库的数据,计算排名后将内容显示在搜索结果页面上。

  搜索词处理

  搜索引擎收到用户输入的搜索词后,需要对搜索词进行一些处理,然后才能进入排名过程。

  搜索词处理过程包括以下几个方面:

  1.中文分词

  与前面预处理步骤中的分词过程一样,搜索词也必须用中文进行分词,并且必须将查询字符串转换为以词为单位的关键词组合。分词原理与分页原理相同。

  2.去阻止这个词

  和上面一样。

  3.指令处理

  以上两步完成后,搜索引擎对剩余内容的默认处理方式是在关键词之间使用[and]逻辑。

  比如用户在搜索框中输入【如何减肥】,分词和停用词后,剩下的关键词就是【减肥】,【方法】,搜索引擎默认排序为用户想查询的内容既有【减肥】也有!这个也要注意!!!还收录[方法]!

  只收录[减肥]而没有[方法]的页面,或只收录[方法]而没有[减肥]的页面,将被视为不符合搜索条件。

  文件匹配

  搜索词经过上面的处理后,搜索引擎得到一个关键词以单位为单位的集合。

  下一阶段,文件匹配阶段,是查找所有收录 关键词 的文件。

  索引部分提到的倒排索引可以快速完成文件匹配,如下图

  

  假设用户搜索[关键词2 关键词7],排名程序只需要找到[关键词2]和[关键词7]这两个词倒排索引,则可以找到所有收录这两个词的页面文件。

  经过简单的计算,我们可以找到同时收录[关键词2]和[关键词7]的所有页面:[文件1]和[文件6]。

  初始子集的选择

  找到收录所有关键词的匹配文件后,无法对这些文件进行相关性计算,因为在实际情况中,经常会找到几十万、几千万甚至几千万的文件。实时对这么多文件进行相关计算需要很长时间。

  其实大部分用户只喜欢看前两页,也就是前20个结果,后面真的很懒,懒得翻!

  对于google搜索引擎,最多只会返回1000条搜索结果给用户,如下(100页,每页10条结果)

  

  百度搜索引擎最多只会返回760个结果

  

  因此,搜索引擎只需要计算前1000/760个结果的相关性即可满足要求。

  由于所有匹配的文件已经具有最基本的相关性(这些文件收录所有查询关键词),搜索引擎会先过滤掉一个权重较高的1000页的文件,并通过过滤权重子集初始化一个,并然后在这个子集中的页面上执行相关计算。

  相关计算

  选择带有权重的初始子集后,就是计算子集中页面的关键词相关性的步骤。

  计算相关性是排名过程中最重要的一步。

  影响相关性的主要因素包括以下几个方面:

  1.关键词常用。

  分词后,多个关键词对整个搜索字符串的意义有不同的贡献。

  使用频率越高的词对搜索词的含义的贡献越小,而使用频率越低的词对搜索词的含义的贡献越大。例如,假设用户输入的搜索词是“we Pluto”。“我们”这个词使用频率很高,出现在很多页面上。它对搜索词“us Pluto”的识别和意义贡献不大。找出那些收录“我们”一词的页面对搜索排名相关性几乎没有影响。收录“我们”一词的页面太多了。

  “冥王星”一词使用频率较低,但它对搜索词“我们的冥王星”的含义贡献更大。收录“冥王星”一词的页面将与搜索词“我们的冥王星”更相关。

  常用词的极端是停用词,它对页面的含义没有影响。

  因此,搜索引擎不会对搜索字符串中的关键词 一视同仁,而是根据常用程度对其进行加权。生僻词权重系数高,常用词权重系数低。排序算法更关注生僻词。

  我们假设“我们”和“冥王星”这两个词出现在 A 和 B 页面上。但是“我们”这个词出现在 A 页面的普通文本中,而“冥王星”这个词出现在 A 页面的标题标签中。 B页,相反,“我们”出现在标题标签中,“冥王星”出现在普通文本中。然后对于搜索词“我们冥王星”,页面 A 将更相关。

  2. 词频和密度。一般认为,在没有关键词积累的情况下,搜索词在页面上出现的频率更高,密度越高,页面与搜索词的相关性就越高。当然,这只是一般规律,实际情况可能并非如此,因此相关性计算中还有其他因素。频率和密度只是部分因素,其重要性越来越低。

  3.关键词 位置和形式。如索引部分所述,页面关键词的格式和位置记录在索引库中。关键词出现在更重要的位置,如标题标签、黑体、H1等,说明该页面与关键词的相关度更高。这部分是页面 SEO 即将解决的问题。

  4.关键词 距离。分段的 关键词 出现在完全匹配中,表明它与搜索词最相关。例如,在搜索“减肥方法”时,页面上连续完整出现的“减肥方法”四个词最相关。如果“减肥”和“方法”这两个词不连续匹配,它们看起来更接近,也被搜索引擎认为稍微更相关。

  5. 链接分析和页面权重。除了页面本身的因素,页面之间的链接和权重关系也会影响关键词的相关性,其中最重要的就是锚文本。在页面上将搜索词作为锚文本的导入链接越多,页面的相关性就越高。

  链接分析还包括链接源页面本身的主题、锚文本周围的文本等。

  查看 Vol.19 前端早读课周刊

  推荐给你

  【2246期】多终端复用框架原理与实践

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线