专业IT网络知识平台,分享IT百科知识、生活百科知识解答!

易企推科技
易企推科技

武汉SEO优化告诉你做好网页处理能让SEO蜘蛛快速抓取数据

来源:小易整编  作者:小易 发布时间:2019-08-27 06:10
摘要:小编告诉你做好网页处理能让SEO蜘蛛快速抓取数据,网页处理在大部分介绍里,都算在爬虫部分。我呆过的第一家公司,并没有网页处理相关的小组。我当时基本上算是最主要的网页...

小编告诉你做好网页处理能让SEO蜘蛛快速抓取数据,网页处理在大部分介绍里,都算在爬虫部分。我呆过的第一家公司,并没有网页处理相关的小组。我当时基本上算是最主要的网页处理工程师了,写了包括网页解析基础库,各种网页里的质量信号的抽取等。不过我呆过的第二家搜索公司,当时有一个小组是专门做网页解析的。当然,本文要谈的不局限于网页解析,而是在索引之前的搜索特征提取。在我做搜索的时候,机器学习还没那么火,我们一般叫质量信号之类的。但是这些质量信号,主要是服务排序的,排序作为一个机器学习任务,使用到的因素,我们称之为特征比较好理解。而网页解析等大部分工作,可以看成网页排序这个复杂Task的特征工程。

网页处理

Index pipeline

在一个网页搜索中,完整的index pipeline很复杂,涉及到死链检测,soft 404页面检测,标题抽取,正文抽取,网页发布时间抽取,结构化信息抽取(比如论坛的各个帖子的内容,作者,时间等。再比如电影的导演,主演,名字,别名等),host rank计算,page rank计算,色情页面检测,垃圾页面检测,作弊网页检测,重复页面检测,病毒页面检测等等。

Html Parser

那么要完成这么多的搜索排序的特征工程,首先我们需要打造一个方便易用的网页解析库。一般我们会实现一个html parser,基本DomTree或者是SAX。编写一个这样的引擎并不容易。解析一个网页比较容易,但是要能够解析几千亿的网页而不crash,并且碰到网页很大(比如超过2M),或者网页很病态(比如只有open tag,没有close tag),解析的速度还能够很快,并且内存依然不会爆掉,需要对这个网页解析库进行千锤百炼。当然,网上已经有了不少开源的解析库了。不过大部分情况是这样的,要不接口不友好,要不性能糟糕,要么代码风格不好。之前谷歌也开源了一个网页解析的项目,我们测试下来,性能实在是跟不上,不太适合搜索引擎。

Xpath

网页解析除了html parser,一般还需要方便工程师进行网页信息抽取,最好是基于配置文件进行抽取,因此一般需要支持xpath查询语言。Xpath的资料网上很丰富,大家有兴趣可以结合XML语言去学习了解。那如何高效支持Xpath进行信息抽取,甚至基于整个配置文件来抽取某一类网页,甚至某一类网站的多种信息抽取,就又有更高level的需求了,比如是否实现一个template config parser之类的解析库。核心诉求是,配置规则很简单,方便易学,甚至可以找一些三四千块钱的编辑就可以进行配置。那么怎么把这个库实现得优雅高效,方便易学,甚至如何开发出一些配套的浏览器工具,便是这块的核心竞争力。据我所知,百度等搜索公司对这方面都花了不少研发精力。

网页解析这里有一个核心竞争力在于,如何利用你的工程能力,对网页解析库这样底层的基础工具进行性能优化,比如优化个10-20%,或者优化了三五倍的性能出来,那整体的搜索引擎相关的计算集群资源,就能得到很大的改进,省出来的银子,不见得比索引性能优化,或者是检索性能优化,或者是各种机器学习模型的排序性能优化来得少。

CSS Parser

网页解析还有好几个有挑战的事情,比如要解析出来网页里字体的大小(字体很小也是作弊的手段之一),颜色(颜色搞成和背景色一样,也是作弊的手段之一),或者是文字是否可见(常规的作弊手段之一)等,都是需要比较高阶的解析的。如果学过网页设计,大家应该知道这块需要对CSS进行解析。CSS一般分为tag内部的,html文件内的,外部CSS文件等。那么如何高效地进行CSS文件,并与HTML解析结果进行结合,就有不少工作值得深入。

此外,CSS文件的压缩和存储/读取,也有一定的挑战。原因在于,不像html这样,大部分网页的内容差异都比较大,CSS一般是给一个网站,或者是一类风格的网页设计的,文件的规模比较少。有一些建站工具做出来的,甚至大部分CSS都一样。既然CSS文件的内容有特殊的规律,那么针对CSS的压缩,可能就会存在特殊的算法。还有一个问题是,网页的内容可能不会变,但是网页的风格却可能会被更新。在网页解析的时候,往往一次性分析百亿级别的网页,那如何高效读取各个网页对应的CSS文件呢?实时抓取么?还是存在mysql?Nosql?还是怎么去特殊处理?

CSS文件怎么解析呢?也有不少开源的项目,当然也可以参考各大浏览器开源项目。不过浏览器项目里一般代码依赖比较复杂,很难单独抽取出来。

Javascript

其实这部分放在爬虫部分更合适。在抓取的时候,往往会碰到页面跳转,或者是有一部分关键的网页内容,是在页面本身加载完毕后,才开始动态加载的。比如做新闻的Hub页抓取的时候,往往会发现我们想要的新闻内容页的链接信息,是通过js来生成的。那怎么办?如果只是抓取一个网站,当然我们可以通过抓包分析,靠人工来总结浏览器背后的网络行为,然后写代码模拟浏览器的行为。通用点的,公司内搭建或者开发一套浏览器抓取的方案,特殊的网页,都使用这些特殊的抓取服务来抓,这样在下游做网页解析的时候,看到的html都是一样带有我们想要抽取的页面内容的了。

之所以放在这部分,很简单,js是一门脚本语言,脚本语言的执行,其实也可以看成解析引擎在跑,只是这里的解析是脚本语言,而不是HTML或者XML这样的标记语言。

网页特征抽取

不仅是搜索排序需要网页特征抽取,挂在网页里的广告系统,也需要使用到网页相关的信息,以判定哪些网页和哪些商业关键词更相关。

那么前面提到的特种网页特征,活学活用上面提到的一些解析引擎就差不多了。当然做这个工作,很多时候需要有一双善于观察的眼睛。主要是几个原因:

互联网的网站规模上亿,表现形式千变万化,很难有统一的解析方法。青菜萝卜各有所好,网站的审美更是如此。因此,标题怎么摆,使用什么标题,都可能不同。网页的发布时间,到底是写成“2019-05-01 10:10”还是写成“19-05-01 10:10:00”,还是写成“19年5月1日上午十点”,还是写成“4小时前”,都完全随意,人都能读懂。

这个其实和目前人工智能里,大家强调的自然语言理解的难题是一样的。自然语言理解一般缩写为NLU,主流的做法虽然也使用深度学习等,但是都非常依赖数据标注,也就是说最好是能见过大部分的说法。那时间有多少种写法呢?还真不知道。加上中文时间和英文时间的表达差异,绝对时间和相对时间等可能性,解析一个时间都很费劲,并且很难100%准确。正如NLU系统往往统计学系结合规则系统,解析时间等网页解析,也往往采取统一检测加特殊配置的方法进行。大的网站往往配置个规则更划算,说不定一个URL pattern就能解析上亿个网页,编写特殊规则的收益非常大。

和统计学习一样,特征工程往往很重要,而特征工程需要依赖经验和灵感。换句话说,需要能够快速找规律。原因很简单,从自由文本里去解析出结构化信息很难,计算复杂度也很高。而有一双善于观察的眼睛,意味着可以找到一个非常有效的特征,并且特征的抽取比较容易,计算代价更小。

和网页处理相关的话题,其中有一个是非常重要的,一个是page rank,host rank,一个是反作弊。Pagerank的资料网上可以说是汗牛充栋了,谷歌和百度的创始人们,也都有这方面的论文或者专利。感兴趣的读者建议直接找一些相关的论文来阅读。

反作弊和SEO

说到反作弊,有兴趣的可以看谷歌反作弊工程师的博客。网址忘了,自己搜索。业界很多做SEO的人,据说都会去阅读上面的文章并做各种研究。反作弊和作弊这个事儿,和信息安全与病毒的关系差不多,因为作弊能够带来商业上的好处,所以商业搜索引擎和作弊者的斗争永远没有结束的时候。道高一尺魔高一丈,这会这些作弊的策略骗过了搜索引擎,明天可能就整站被下掉了。

说过反作弊和SEO,往往外面的人觉得做搜索引擎开发的工程师都有特权,知道怎么去操纵网页的权重,其实都是想多了。一来,这事儿不是谁都懂,二来,这事儿关乎职场道德,三来,这事儿值钱的话,我为啥免费给你干?

当然,反作弊的工作,往往也会干倒一大批,误伤三五家。我身边就有几个朋友曾经碰到类似的情况,托我帮找朋友去解决问题。

反作弊的话题和SEO的话题都挺大的,我自己也不太删除。SEO之前曾经阅读过一本专著,好像是新加坡的一个哥们写的,现在忘了差不多了,不过大概的策略倒是和搜索排序的因子差不多正相关的。反作弊的话题,我记得吴军的《数学之美》曾有专门章节论述,有兴趣的同学也可以找来看看。吴军在谷歌的时候,应该专门从事过一段时间反作弊系统的研发。


本文地址:网站优化频道 https://www.hkm168.com/youhua/1147.html,易企推百科一个免费的知识分享平台,本站部分文章来网络分享,本着互联网分享的精神,如有涉及到您的权益,请联系我们处理,谢谢!


网站优化
小编:小易整编
相关文章相关阅读
  • win10电脑怎么快速切屏

    win10电脑怎么快速切屏

    电脑怎么切屏?在使用电脑的时候,有的朋友会使用两个甚至三个显示屏,但是在使用的时候,就会遇到需要切换屏幕的问题,那么电脑怎么切屏呢?一些朋友不知道电脑快速切屏方法,所以本期将教大家win10电脑怎么快速切屏。win10电脑怎么快速切屏?具体...

  • MySQL连接被重置,如何处理?

    MySQL连接被重置,如何处理?

    mysql连接被重置,如何处理?MySQL是一种常用的关系型数据库管理系统,广泛应用于各种不同规模的项目中。然而,在使用MySQL时,有时会遇到连接被重置的情况,这可能会给我们的项目带来一些麻烦。本文将介绍MySQL连接被重置的原因以及如何...

  • css设置网页字体

    css设置网页字体

    css是层叠样式表的缩写,是用于网站样式设计的语言。其中,设置网页字体是css中的一个重要方面。如何使用css设置网页字体,将为我们带来更好的视觉体验,提升页面的可读性和专业感。本文将主要介绍css中的字体相关设置,包括字体样式、字体大小以...

  • mtkmt6765什么处理器

    mtkmt6765什么处理器

    mtkmt6765是联发科的mt6765处理器,是一款中低端入门级处理器。mt6765处理器的最高频率为2.2ghz,采用八核心设计、12纳米工艺,集成了蓝牙、fm、wlan和gps模块,包括一个调制解调器和一个应用处理子系统,支持lte...

  • Javascript如何使网页跳转

    Javascript如何使网页跳转

    方法:1、使用_window.location.href方式;2、使用window.history.back方式;3、使用window.navigate方式;4、使用self.location方式;5、使用top.location方式。本教...

  • Python服务器编程:使用PyAudio进行音频处理

    Python服务器编程:使用PyAudio进行音频处理

    python是一种功能强大的编程语言,可以用于从简单的脚本到复杂的应用程序和服务器。pyaudio是python中一种流行的音频处理库,可以用于录制、播放和处理音频数据。在本文中,我们将探讨如何使用PyAudio来开发一个Python服务器...

  • 计算机可以进行自动控制处理是因为其能够什么

    计算机可以进行自动控制处理是因为其能够什么

    因为其能够“存储程序”。存储程序是计算机能自动控制处理的基础,其原理是将根据特定问题编写的程序存放在计算机存储器中,然后按存储器中的存储程序的首地址执行程序的第一条指令,以后就按照该程序的规定顺序执行其他指令,直至程序结束执行。本教程操作环...

  • 赛扬j1800相当于酷睿什么处理器(赛扬j1800能干嘛)

    赛扬j1800相当于酷睿什么处理器(赛扬j1800能干嘛)

    赛扬j1800相当于酷睿什么处理器j1800处理器可与i3处理器媲美。英特尔赛扬双核j1800处理器采用了45纳米工艺,功耗为16瓦,主频为2.4GHz。作为英特尔公司开发的中央处理器,英特尔处理器有移动、台式、服务器三个系列,并且是计算机...

  • 周排行
  • 月排行
  • 年排行