網(wǎng)頁(yè)抓取數據百度百科( 盆友們|后端技術(shù)指南針|來(lái)源|圖蟲(chóng)讀完,肯定有所收獲)
優(yōu)采云 發(fā)布時(shí)間: 2022-02-12 17:23網(wǎng)頁(yè)抓取數據百度百科(
盆友們|后端技術(shù)指南針|來(lái)源|圖蟲(chóng)讀完,肯定有所收獲)
來(lái)源 | 后端技術(shù)指南針
頭像| 圖蟲(chóng)
寫(xiě)在前面
今天和小伙伴一起學(xué)習一下通用搜索引擎的一些技術(shù)要點(diǎn)。
鑒于搜索引擎內容量大,每個(gè)部分都夠寫(xiě)幾篇文章的文章了,所以這篇文章只是一個(gè)指南,深挖還得由老手來(lái)做。
通過(guò)本文,您將對通用搜索引擎的基本原理和組成部分有一個(gè)更清晰的認識。仔細閱讀后,你一定會(huì )有所收獲!
大家不要廢話(huà)了,趕緊上車(chē)吧!
了解搜索引擎
2.1 搜索引擎分類(lèi)
搜索引擎根據使用場(chǎng)景和規??梢院?jiǎn)單分為兩類(lèi):
通用搜索又稱(chēng)大搜索,如谷歌、百度、搜狗、神馬等都屬于這一類(lèi)。
垂直搜索又稱(chēng)垂直搜索,是在特定領(lǐng)域的搜索,比如用QQ音樂(lè )搜索周杰倫的歌曲。
兩類(lèi)搜索引擎的數據規模和數據特征雖然不同,但都旨在彌合用戶(hù)與海量信息之間的鴻溝。
2.2 搜索和推薦
搜索和推薦經(jīng)常被比較,但兩者之間存在一些差異和聯(lián)系。
2.3 搜索引擎評估標準
我們每天都在和搜索引擎打交道,評價(jià)一個(gè)搜索引擎的好壞可以簡(jiǎn)單概括為:準確性、及時(shí)性、響應速度、權威性等。
換句話(huà)說(shuō),搜索引擎了解用戶(hù)真正在尋找什么,并且可以快速準確地顯示出來(lái)。還可以收錄及時(shí)展示一些熱點(diǎn)和突發(fā)信息,從而很好的贏(yíng)得用戶(hù)。
這個(gè)目標需要搜索引擎多個(gè)模塊的協(xié)同處理,是一項復雜的系統工程,并非易事。
常見(jiàn)搜索引擎的總體概述
3.1 搜索引擎的基本流程
大白試圖用簡(jiǎn)單的語(yǔ)言來(lái)表達一般搜索引擎的大致工作原理:
1.網(wǎng)絡(luò )蜘蛛每天孜孜不倦地對收錄網(wǎng)頁(yè)進(jìn)行工作,然后進(jìn)行存儲,使每個(gè)站點(diǎn)的頁(yè)面都有一個(gè)鏡像,規模達到百億/千億。
2. 不能直接使用單純的鏡像。需要對其進(jìn)行處理和切分,建立搜索詞與網(wǎng)頁(yè)的對應關(guān)系,這樣用戶(hù)在搜索某物時(shí),就會(huì )得到很多相關(guān)的網(wǎng)頁(yè)。
3. 比如“搜索隱藏的角落”可能找到100個(gè)相關(guān)網(wǎng)頁(yè),但是網(wǎng)頁(yè)和搜索詞之間的相關(guān)性必須強或弱,所以需要對網(wǎng)頁(yè)進(jìn)行排序,而且有很多排序策略。將優(yōu)質(zhì)網(wǎng)頁(yè)放在最前面,向用戶(hù)展示。
用戶(hù)看到相關(guān)結果后,點(diǎn)擊或跳過(guò),搜索引擎根據用戶(hù)的相關(guān)動(dòng)作進(jìn)行調整,實(shí)現整個(gè)閉環(huán)流程。
4.為了更好地了解用戶(hù)的真實(shí)目的,需要了解搜索詞的意圖,分段錄入,替換同義詞,糾正語(yǔ)法錯誤,然后根據這些搜索詞獲取數據來(lái)查找用戶(hù)。記住網(wǎng)頁(yè)。
例如,如果搜索詞是“Eagle”,它可能是自然界中的老鷹,也可能是 NBA 中的一支球隊:
3.2 搜索引擎的基本組件
我們先簡(jiǎn)單看一下各個(gè)模塊的基本組成和主要功能:
接下來(lái),我們將簡(jiǎn)要介紹幾個(gè)模塊的基本內容和技術(shù)點(diǎn)。
網(wǎng)絡(luò )爬蟲(chóng)模塊介紹
網(wǎng)絡(luò )爬蟲(chóng)模塊是通用搜索引擎的一個(gè)非?;镜慕M件。一般由分布式爬蟲(chóng)實(shí)現。下面我們來(lái)看看這個(gè)搬運工是如何實(shí)現海量網(wǎng)頁(yè)發(fā)現的:
網(wǎng)絡(luò )爬蟲(chóng)的基本流程:
爬取過(guò)程中有多種遍歷策略:深度優(yōu)先遍歷DFS、廣度優(yōu)先遍歷BFS、部分PageRank策略、OPIC在線(xiàn)頁(yè)面重要性計算策略、大站點(diǎn)優(yōu)先策略等。
在工程實(shí)踐中,需要根據自身情況和搜索引擎的特點(diǎn),選擇某種策略或策略組合。
網(wǎng)絡(luò )爬蟲(chóng)需要遵循Robots協(xié)議(網(wǎng)絡(luò )爬蟲(chóng)排除標準),這是網(wǎng)絡(luò )爬蟲(chóng)和網(wǎng)站之間的君子協(xié)定,網(wǎng)站通過(guò)協(xié)議告訴網(wǎng)絡(luò )爬蟲(chóng)什么可以被抓,什么不能。
同時(shí),網(wǎng)絡(luò )爬蟲(chóng)需要考慮爬取的頻率,防止網(wǎng)站負擔過(guò)重。簡(jiǎn)而言之,搜索引擎的網(wǎng)絡(luò )爬蟲(chóng)需要適度。
網(wǎng)頁(yè)內容處理模塊
爬蟲(chóng)模塊存儲網(wǎng)頁(yè)內容后,網(wǎng)頁(yè)內存處理模塊開(kāi)始解析網(wǎng)頁(yè)內容。主要任務(wù)包括:數據清洗、網(wǎng)頁(yè)內容分詞、建立正向索引、建立倒排索引等。
5.1 數據清洗
一般來(lái)說(shuō),除了具體的內容外,網(wǎng)頁(yè)中還會(huì )有很多不相關(guān)的東西,比如html標簽、推廣等,在實(shí)際的搜索引擎中是沒(méi)用的。
內容處理模塊會(huì )清理無(wú)用的數據和標簽,為后續的分詞做準備。
5.2 中文分詞
清洗后的內容是通過(guò)分詞關(guān)鍵詞提取出來(lái)的,比如一個(gè)網(wǎng)頁(yè)收錄1000個(gè)詞,分詞后大約有50個(gè)詞,相當于提取了網(wǎng)頁(yè)的主干,會(huì )分析標題,摘要、正文和正文的其他部分。內容以不同的權重處理。
在分詞過(guò)程中,會(huì )去除停用詞、功能詞等,如“的、得、地”,從而還原網(wǎng)頁(yè)的主要內容。
我們用在線(xiàn)網(wǎng)頁(yè)分割工具和真實(shí)網(wǎng)頁(yè)模擬這個(gè)過(guò)程:
網(wǎng)絡(luò )分詞在線(xiàn)工具:
爬網(wǎng):
可以看出,分詞后可以標注詞頻。這些都是后續網(wǎng)頁(yè)排名的重要來(lái)源,但是中文非常復雜,所以分詞算法有很多,常見(jiàn)的有:
5.3 正索引
假設我們對每個(gè)網(wǎng)頁(yè)的docid進(jìn)行唯一的編號,經(jīng)過(guò)前面的分詞,一個(gè)網(wǎng)頁(yè)會(huì )被分成多個(gè)不同權重的實(shí)體詞。
所謂正排名,是指所有屬于該網(wǎng)頁(yè)的內容都可以根據docid獲得。這是一個(gè)符合我們思想的積極過(guò)程。相對而言,會(huì )有倒排索引。
我們以《隱秘的角落》劇情介紹的一頁(yè)為例來(lái)模擬分詞的情況,大致如下(本次分詞結果純屬腦補,以實(shí)際為準):
5.4 倒排索引
假設我們已經(jīng)分割了10000個(gè)網(wǎng)頁(yè),其中收錄一些公共搜索詞:微山湖、智取虎山、三十站立、隱藏的角落等,那么我們將在匯總關(guān)系后建立一個(gè)搜索詞->網(wǎng)頁(yè)映射。
那么,對于搜索詞“隱藏的角落”,有很多網(wǎng)頁(yè),倒排索引相當于從一個(gè)詞中可以拉出多少個(gè)文章的過(guò)程。
就像我們提到食物一樣,我們認為:火鍋、燒烤、烤鴨、炒菜等,是一個(gè)從點(diǎn)到面的過(guò)程,而這個(gè)逆向過(guò)程在搜索引擎中非常重要。
5.5 章節總結
內容處理模塊對抓取的網(wǎng)頁(yè)進(jìn)行清洗,提前將新的URL提供給爬蟲(chóng)模塊,對內容進(jìn)行分段,建立正向索引和倒排索引,是鏈接前后的中間鏈接。
特別是提到正向索引和倒排索引并不直觀(guān),但道理不難理解:
正指數:一個(gè)網(wǎng)頁(yè)中有多少個(gè)關(guān)鍵詞,具體是屬于網(wǎng)頁(yè)本身的內容的集合,也就是一個(gè)網(wǎng)頁(yè)。
倒排索引:一個(gè)搜索關(guān)鍵詞對應多少個(gè)相關(guān)網(wǎng)頁(yè),即替代網(wǎng)頁(yè)的集合,是網(wǎng)頁(yè)的一種。
頁(yè)面排序和用戶(hù)模塊
6.1 需要頁(yè)面排序
由于存儲的網(wǎng)頁(yè)數以百億計,那么一個(gè)搜索詞可能涉及數萬(wàn)、數十萬(wàn)甚至更多的相關(guān)網(wǎng)頁(yè)。
網(wǎng)頁(yè)排名需要綜合考慮:相關(guān)性、權威性、及時(shí)性、豐富性等方面。
搜索引擎要向用戶(hù)展示高質(zhì)量且相關(guān)性強的網(wǎng)頁(yè),并將其放在首位,否則搜索效果會(huì )很差,用戶(hù)不會(huì )購買(mǎi)。
事實(shí)上,情況也是如此。例如,搜索引擎返回 10 頁(yè)結果,每頁(yè) 10 個(gè),以及 100 個(gè)摘要。一般用戶(hù)不會(huì )點(diǎn)擊1-3頁(yè)之后的頁(yè)面,所以排序好的header內容對于搜索來(lái)說(shuō)非常重要。結果很重要。
我們還是以“隱藏角落”的檢索為例。百度一共返回了10頁(yè),其中1-2頁(yè)是強相關(guān)的,算是比較好的檢索結果:
6.2 常用的網(wǎng)頁(yè)排序策略
網(wǎng)頁(yè)排名策略是一個(gè)不斷優(yōu)化和改進(jìn)的演進(jìn)過(guò)程。我們來(lái)看看排名策略:
這是早期搜索引擎經(jīng)常采用的方法,相對簡(jiǎn)單但效果很好。
簡(jiǎn)單來(lái)說(shuō),排名是根據關(guān)鍵詞在網(wǎng)頁(yè)中出現的頻率和位置,因為一般認為搜索詞出現的次數越多,位置越重要,網(wǎng)頁(yè)的相關(guān)性和排名越高。
詞頻不僅僅是次數的計數。它需要一個(gè)全局的概念來(lái)判斷關(guān)鍵詞的相對頻率。這就是我們要講的TF-IDF逆文檔頻率。我們來(lái)看看百度百科的解釋?zhuān)?/p>
TF-IDF(詞頻-逆文檔頻率)是一種常用的信息檢索和數據挖掘加權技術(shù)。
TF 是詞頻,IDF 是逆文檔頻率。
TF-IDF 是一種統計方法,用于評估單詞對文檔集或語(yǔ)料庫中的一個(gè)文檔的重要性。
一個(gè)詞的重要性與它在文檔中出現的次數成正比,但與它在語(yǔ)料庫中出現的頻率成反比。
舉個(gè)栗子:
“吃”這個(gè)詞在網(wǎng)頁(yè)上出現了10次,雖然很多,但是“吃”這個(gè)詞太常見(jiàn)了,因為它出現在很多其他網(wǎng)頁(yè)中,所以搜索詞“吃”的重要性相對降低了。
鏈接分析排名認為,一個(gè)網(wǎng)頁(yè)被其他網(wǎng)頁(yè)引用的次數越多或被引用的權威網(wǎng)頁(yè)越多,該網(wǎng)頁(yè)的質(zhì)量就越高。
基于鏈接分析的排名算法有很多,其中最著(zhù)名的PageRank算法被Google廣泛使用,是其核心排名算法。
我們來(lái)看看PageRank算法的基本思想:
網(wǎng)頁(yè)的重要性由 PageRank 值來(lái)衡量。一個(gè)網(wǎng)頁(yè)的PageRank值體現在兩個(gè)方面:引用該網(wǎng)頁(yè)的其他網(wǎng)頁(yè)的數量和引用該頁(yè)面的其他頁(yè)面的重要性。
假設一個(gè)網(wǎng)頁(yè)A被另一個(gè)網(wǎng)頁(yè)B引用,網(wǎng)頁(yè)B給網(wǎng)頁(yè)B所引用的網(wǎng)頁(yè)分配一個(gè)PageRank值,所以對網(wǎng)頁(yè)A的引用越多,其PageRank值就越高。
另外,網(wǎng)頁(yè)B越重要,它所引用的頁(yè)面可以分配的PageRank值越多,網(wǎng)頁(yè)A的PageRank值越高,越重要。
其實(shí)這個(gè)算法說(shuō)起來(lái)很簡(jiǎn)單:比如寫(xiě)公眾號的時(shí)候,大V轉載就相當于引用。其他公眾號轉載越多,您的公眾號內容質(zhì)量就越高。
PageRank算法也存在一定的問(wèn)題。比如對新頁(yè)面不友好,新頁(yè)面暫時(shí)沒(méi)有被大量引用,所以PageRank值很低,而PageRank算法強調頁(yè)面之間的引用關(guān)系,可能付出的還不夠注意頁(yè)面本身的主題內容。,也就是所謂的話(huà)題漂移問(wèn)題。
與PageRank算法類(lèi)似,還有一些其他算法可以彌補主題關(guān)聯(lián)問(wèn)題,包括:HillTop算法、Topic-Sensitive PageRank算法、HITS算法等,本文不再展開(kāi)。
6.3 網(wǎng)頁(yè)反作弊和seo
搜索引擎也有28的原則。頭部的網(wǎng)頁(yè)占了很大的點(diǎn)擊量,這也意味著(zhù)巨大的商業(yè)價(jià)值。
這里我們會(huì )提到SEO,先看看百度百科對SEO的定義:
搜索引擎優(yōu)化也稱(chēng)為SEO,即Search Engine Optimization,就是了解各種搜索引擎如何進(jìn)行搜索,如何爬取互聯(lián)網(wǎng)頁(yè)面,如何通過(guò)分析網(wǎng)站的排名規則來(lái)確定具體的關(guān)鍵詞搜索。搜索引擎。結果排名技術(shù)。
搜索引擎使用容易被搜索引用的方法優(yōu)化網(wǎng)站,提高網(wǎng)站在搜索引擎中的自然排名,吸引更多用戶(hù)訪(fǎng)問(wèn)網(wǎng)站,提高網(wǎng)站@ >的流量,提高網(wǎng)站的銷(xiāo)售能力和宣傳能力,從而提升網(wǎng)站的品牌效應。
道高一尺,魔高十尺,唯有魔能勝魔。
網(wǎng)頁(yè)反作弊是搜索引擎需要解決的一個(gè)重要問(wèn)題。常見(jiàn)的包括內容反作弊和鏈接分析反作弊。
6.4 用戶(hù)搜索意圖理解
用戶(hù)模塊直接與用戶(hù)交互,接收用戶(hù)的搜索詞,準確理解用戶(hù)的搜索意圖。
事實(shí)上,用戶(hù)的輸入是多種多樣的,口語(yǔ)化的,甚至是拼寫(xiě)錯誤的,不同背景的用戶(hù)對同一個(gè)搜索詞有不同的需求,使用無(wú)爭議搜索詞的目的也不同。
全文摘要
搜索引擎是一個(gè)非常復雜的系統工程,涉及到很多算法和工程實(shí)現。本文旨在和大家一起簡(jiǎn)單梳理一下搜索引擎的基本組成和運行原理。這是一門(mén)科普文章。
搜索引擎中的每一個(gè)模塊都不容易做好,也是互聯(lián)網(wǎng)產(chǎn)品技術(shù)含金量的典型代表。深入研究一個(gè)模塊將受益匪淺。