最近中文字幕2019高清,亚洲人成高清在线播放,男生淦哭男生图片动漫有字,国产亚洲精品九九久在线观看,无码av专区丝袜专区

聊聊搜索引擎--網(wǎng)頁(yè)處理篇

優(yōu)采云 發(fā)布時(shí)間: 2022-05-21 02:21

  聊聊搜索引擎--網(wǎng)頁(yè)處理篇

  前面的一篇文章發(fā)得有點(diǎn)匆忙,主要是想在大家過(guò)節前發(fā)一篇,別浪費了公眾號的發(fā)送次數。上文《》談的是爬蟲(chóng)部分。文章里提到之前寫(xiě)過(guò)兩篇有關(guān)搜索的文章,忘了鏈接過(guò)去了,這里放一下,方便有興趣的讀者閱讀。

  《》

  《》

  前文提到,搜索引擎一般可以分為爬蟲(chóng)模塊,網(wǎng)頁(yè)處理,索引模塊,檢索模塊,排序模塊幾個(gè)模塊。爬蟲(chóng)負責抓取數據,算是數據生產(chǎn)方。今天我們要說(shuō)的是數據的加工部門(mén)。也就是網(wǎng)頁(yè)處理。

  網(wǎng)頁(yè)處理在大部分介紹里,都算在爬蟲(chóng)部分。我呆過(guò)的第一家公司,并沒(méi)有網(wǎng)頁(yè)處理相關(guān)的小組。我當時(shí)基本上算是最主要的網(wǎng)頁(yè)處理工程師了,寫(xiě)了包括網(wǎng)頁(yè)解析基礎庫,各種網(wǎng)頁(yè)里的質(zhì)量信號的抽取等。不過(guò)我呆過(guò)的第二家搜索公司,當時(shí)有一個(gè)小組是專(zhuān)門(mén)做網(wǎng)頁(yè)解析的。當然,本文要談的不局限于網(wǎng)頁(yè)解析,而是在索引之前的搜索特征提取。在我做搜索的時(shí)候,機器學(xué)習還沒(méi)那么火,我們一般叫質(zhì)量信號之類(lèi)的。但是這些質(zhì)量信號,主要是服務(wù)排序的,排序作為一個(gè)機器學(xué)習任務(wù),使用到的因素,我們稱(chēng)之為特征比較好理解。而網(wǎng)頁(yè)解析等大部分工作,可以看成網(wǎng)頁(yè)排序這個(gè)復雜Task的特征工程。

  Index pipeline

  在一個(gè)網(wǎng)頁(yè)搜索中,完整的index pipeline 很復雜,涉及到死鏈檢測,soft 404頁(yè)面檢測,標題抽取,正文抽取,網(wǎng)頁(yè)發(fā)布時(shí)間抽取,結構化信息抽?。ū热缯搲母鱾€(gè)帖子的內容,作者,時(shí)間等。再比如電影的導演,主演,名字,別名等),host rank 計算,page rank計算,*敏*感*詞*頁(yè)面檢測,垃圾頁(yè)面檢測,作弊網(wǎng)頁(yè)檢測,重復頁(yè)面檢測,病毒頁(yè)面檢測等等。

  Html Parser

  那么要完成這么多的搜索排序的特征工程,首先我們需要打造一個(gè)方便易用的網(wǎng)頁(yè)解析庫。一般我們會(huì )實(shí)現一個(gè)html parser, 基本DomTree 或者是SAX。編寫(xiě)一個(gè)這樣的引擎并不容易。解析一個(gè)網(wǎng)頁(yè)比較容易,但是要能夠解析幾千億的網(wǎng)頁(yè)而不crash,并且碰到網(wǎng)頁(yè)很大(比如超過(guò)2M),或者網(wǎng)頁(yè)很病態(tài)(比如只有open tag, 沒(méi)有close tag),解析的速度還能夠很快,并且內存依然不會(huì )爆掉,需要對這個(gè)網(wǎng)頁(yè)解析庫進(jìn)行千錘百煉。當然,網(wǎng)上已經(jīng)有了不少開(kāi)源的解析庫了。不過(guò)大部分情況是這樣的,要不接口不友好,要不性能糟糕,要么代碼風(fēng)格不好。之前谷歌也開(kāi)源了一個(gè)網(wǎng)頁(yè)解析的項目,我們測試下來(lái),性能實(shí)在是跟不上,不太適合搜索引擎。

  Xpath

  網(wǎng)頁(yè)解析除了html parser ,一般還需要方便工程師進(jìn)行網(wǎng)頁(yè)信息抽取,最好是基于配置文件進(jìn)行抽取,因此一般需要支持xpath 查詢(xún)語(yǔ)言。Xpath 的資料網(wǎng)上很豐富,大家有興趣可以結合XML語(yǔ)言去學(xué)習了解。那如何高效支持 Xpath 進(jìn)行信息抽取,甚至基于整個(gè)配置文件來(lái)抽取某一類(lèi)網(wǎng)頁(yè),甚至某一類(lèi)網(wǎng)站的多種信息抽取,就又有更高level的需求了,比如是否實(shí)現一個(gè)template config parser 之類(lèi)的解析庫。 核心訴求是,配置規則很簡(jiǎn)單,方便易學(xué),甚至可以找一些三四千塊錢(qián)的編輯就可以進(jìn)行配置。那么怎么把這個(gè)庫實(shí)現得優(yōu)雅高效,方便易學(xué),甚至如何開(kāi)發(fā)出一些配套的瀏覽器工具,便是這塊的核心競爭力。據我所知,百度等搜索公司對這方面都花了不少研發(fā)精力。

  網(wǎng)頁(yè)解析這里有一個(gè)核心競爭力在于,如何利用你的工程能力,對網(wǎng)頁(yè)解析庫這樣底層的基礎工具進(jìn)行性能優(yōu)化,比如優(yōu)化個(gè)10-20%,或者優(yōu)化了三五倍的性能出來(lái),那整體的搜索引擎相關(guān)的計算集群資源,就能得到很大的改進(jìn),省出來(lái)的銀子,不見(jiàn)得比索引性能優(yōu)化,或者是檢索性能優(yōu)化,或者是各種機器學(xué)習模型的排序性能優(yōu)化來(lái)得少。

  CSS Parser

  網(wǎng)頁(yè)解析還有好幾個(gè)有挑戰的事情,比如要解析出來(lái)網(wǎng)頁(yè)里字體的大?。ㄗ煮w很小也是作弊的手段之一),顏色(顏色搞成和背景色一樣,也是作弊的手段之一),或者是文字是否可見(jiàn)(常規的作弊手段之一)等,都是需要比較高階的解析的。如果學(xué)過(guò)網(wǎng)頁(yè)設計,大家應該知道這塊需要對CSS進(jìn)行解析。CSS一般分為tag 內部的,html 文件內的,外部CSS文件等。那么如何高效地進(jìn)行CSS文件,并與HTML解析結果進(jìn)行結合,就有不少工作值得深入。

  此外,CSS文件的壓縮和存儲/讀取,也有一定的挑戰。原因在于,不像html 這樣,大部分網(wǎng)頁(yè)的內容差異都比較大,CSS 一般是給一個(gè)網(wǎng)站,或者是一類(lèi)風(fēng)格的網(wǎng)頁(yè)設計的,文件的規模比較少。有一些建站工具做出來(lái)的,甚至大部分CSS都一樣。既然CSS文件的內容有特殊的規律,那么針對CSS的壓縮,可能就會(huì )存在特殊的算法。還有一個(gè)問(wèn)題是,網(wǎng)頁(yè)的內容可能不會(huì )變,但是網(wǎng)頁(yè)的風(fēng)格卻可能會(huì )被更新。在網(wǎng)頁(yè)解析的時(shí)候,往往一次性分析百億級別的網(wǎng)頁(yè),那如何高效讀取各個(gè)網(wǎng)頁(yè)對應的CSS文件呢?實(shí)時(shí)抓取么?還是存在mysql ? Nosql ? 還是怎么去特殊處理?

  CSS 文件怎么解析呢? 也有不少開(kāi)源的項目,當然也可以參考各大瀏覽器開(kāi)源項目。不過(guò)瀏覽器項目里一般代碼依賴(lài)比較復雜,很難單獨抽取出來(lái)。

  Javascript

  其實(shí)這部分放在爬蟲(chóng)部分更合適。在抓取的時(shí)候,往往會(huì )碰到頁(yè)面跳轉,或者是有一部分關(guān)鍵的網(wǎng)頁(yè)內容,是在頁(yè)面本身加載完畢后,才開(kāi)始動(dòng)態(tài)加載的。比如做新聞的Hub頁(yè)抓取的時(shí)候,往往會(huì )發(fā)現我們想要的新聞內容頁(yè)的鏈接信息,是通過(guò) js 來(lái)生成的。那怎么辦?如果只是抓取一個(gè)網(wǎng)站,當然我們可以通過(guò)抓包分析,靠人工來(lái)總結瀏覽器背后的網(wǎng)絡(luò )行為,然后寫(xiě)代碼模擬瀏覽器的行為。通用點(diǎn)的,公司內搭建或者開(kāi)發(fā)一套瀏覽器抓取的方案,特殊的網(wǎng)頁(yè),都使用這些特殊的抓取服務(wù)來(lái)抓,這樣在下游做網(wǎng)頁(yè)解析的時(shí)候,看到的 html 都是一樣帶有我們想要抽取的頁(yè)面內容的了。

  之所以放在這部分,很簡(jiǎn)單,js 是一門(mén)腳本語(yǔ)言,腳本語(yǔ)言的執行,其實(shí)也可以看成解析引擎在跑,只是這里的解析是腳本語(yǔ)言,而不是HTML 或者 XML 這樣的標記語(yǔ)言。

  網(wǎng)頁(yè)特征抽取

  不僅是搜索排序需要網(wǎng)頁(yè)特征抽取,掛在網(wǎng)頁(yè)里的廣告系統,也需要使用到網(wǎng)頁(yè)相關(guān)的信息,以判定哪些網(wǎng)頁(yè)和哪些商業(yè)關(guān)鍵詞更相關(guān)。

  那么前面提到的特種網(wǎng)頁(yè)特征,活學(xué)活用上面提到的一些解析引擎就差不多了。當然做這個(gè)工作,很多時(shí)候需要有一雙善于觀(guān)察的眼睛。主要是幾個(gè)原因:

  和網(wǎng)頁(yè)處理相關(guān)的話(huà)題,其中有一個(gè)是非常重要的,一個(gè)是page rank, host rank, 一個(gè)是反作弊。Pagerank 的資料網(wǎng)上可以說(shuō)是汗牛充棟了,谷歌和百度的創(chuàng )始人們,也都有這方面的論文或者專(zhuān)利。感興趣的讀者建議直接找一些相關(guān)的論文來(lái)閱讀。

  反作弊和SEO

  說(shuō)到反作弊,有興趣的可以看谷歌反作弊工程師的博客。網(wǎng)址忘了,自己搜索。業(yè)界很多做SEO的人,據說(shuō)都會(huì )去閱讀上面的文章并做各種研究。反作弊和作弊這個(gè)事兒,和信息安全與病毒的關(guān)系差不多,因為作弊能夠帶來(lái)商業(yè)上的好處,所以商業(yè)搜索引擎和作弊者的斗爭永遠沒(méi)有結束的時(shí)候。道高一尺魔高一丈,這會(huì )這些作弊的策略騙過(guò)了搜索引擎,明天可能就整站被下掉了。

  說(shuō)過(guò)反作弊和SEO,往往外面的人覺(jué)得做搜索引擎開(kāi)發(fā)的工程師都有特權,知道怎么去操縱網(wǎng)頁(yè)的權重,其實(shí)都是想多了。一來(lái),這事兒不是誰(shuí)都懂,二來(lái),這事兒關(guān)乎職場(chǎng)道德,三來(lái),這事兒值錢(qián)的話(huà),我為啥免費給你干?

  當然,反作弊的工作,往往也會(huì )干倒一大批,誤傷三五家。我身邊就有幾個(gè)朋友曾經(jīng)碰到類(lèi)似的情況,托我幫找朋友去解決問(wèn)題。

  反作弊的話(huà)題和SEO的話(huà)題都挺大的,我自己也不太刪除。SEO之前曾經(jīng)閱讀過(guò)一本專(zhuān)著(zhù),好像是新加坡的一個(gè)哥們寫(xiě)的,現在忘了差不多了,不過(guò)大概的策略倒是和搜索排序的因子差不多正相關(guān)的。反作弊的話(huà)題,我記得吳軍的《數學(xué)之美》曾有專(zhuān)門(mén)章節論述,有興趣的同學(xué)也可以找來(lái)看看。吳軍在谷歌的時(shí)候,應該專(zhuān)門(mén)從事過(guò)一段時(shí)間反作弊系統的研發(fā)。

  好了,這部分話(huà)題先分享到這里,下文分享下索引相關(guān)的話(huà)題。

0 個(gè)評論

要回復文章請先登錄注冊


官方客服QQ群

微信人工客服

QQ人工客服


線(xiàn)

最近中文字幕2019高清,亚洲人成高清在线播放,男生淦哭男生图片动漫有字,国产亚洲精品九九久在线观看,无码av专区丝袜专区