互聯(lián)網(wǎng)資訊爬蟲工具是一款專業(yè)的關(guān)鍵詞全網(wǎng)搜索軟件,輸入文章ID開始爬取,選定后可以復(fù)制文章進(jìn)行編輯,適用于有需要做內(nèi)容的小伙伴,歡迎來西西下載體驗(yàn)。
開發(fā)介紹:
最近發(fā)朋友圈,做私域流量,所以每天都有做法大佬的最新資訊內(nèi)容。所以為了團(tuán)隊(duì)工作便捷,寫了個(gè)爬蟲工具,獲取一天最新的互聯(lián)網(wǎng)資訊和電商資訊。
關(guān)于爬蟲:
網(wǎng)絡(luò)爬蟲(又被稱為網(wǎng)頁蜘蛛,網(wǎng)絡(luò)機(jī)器人,在FOAF社區(qū)中間,更經(jīng)常的稱為網(wǎng)頁追逐者),是一種按照一定的規(guī)則,自動地抓取萬維網(wǎng)信息的程序或者腳本。另外一些不常使用的名字還有螞蟻、自動索引、模擬程序或者蠕蟲。
網(wǎng)絡(luò)爬蟲按照系統(tǒng)結(jié)構(gòu)和實(shí)現(xiàn)技術(shù),大致可以分為以下幾種類型:通用網(wǎng)絡(luò)爬蟲(General Purpose Web Crawler)、聚焦網(wǎng)絡(luò)爬蟲(Focused Web Crawler)、增量式網(wǎng)絡(luò)爬蟲(Incremental Web Crawler)、深層網(wǎng)絡(luò)爬蟲(Deep Web Crawler)。 實(shí)際的網(wǎng)絡(luò)爬蟲系統(tǒng)通常是幾種爬蟲技術(shù)相結(jié)合實(shí)現(xiàn)的 [1] 。
通用網(wǎng)絡(luò)爬蟲
通用網(wǎng)絡(luò)爬蟲又稱全網(wǎng)爬蟲(Scalable Web Crawler),爬行對象從一些種子 URL 擴(kuò)充到整個(gè) Web,主要為門戶站點(diǎn)搜索引擎和大型 Web 服務(wù)提供商采集數(shù)據(jù)。 由于商業(yè)原因,它們的技術(shù)細(xì)節(jié)很少公布出來。 這類網(wǎng)絡(luò)爬蟲的爬行范圍和數(shù)量巨大,對于爬行速度和存儲空間要求較高,對于爬行頁面的順序要求相對較低,同時(shí)由于待刷新的頁面太多,通常采用并行工作方式,但需要較長時(shí)間才能刷新一次頁面。 雖然存在一定缺陷,通用網(wǎng)絡(luò)爬蟲適用于為搜索引擎搜索廣泛的主題,有較強(qiáng)的應(yīng)用價(jià)值 [1] 。
通用網(wǎng)絡(luò)爬蟲的結(jié)構(gòu)大致可以分為頁面爬行模塊 、頁面分析模塊、鏈接過濾模塊、頁面數(shù)據(jù)庫、URL 隊(duì)列、初始 URL 集合幾個(gè)部分。為提高工作效率,通用網(wǎng)絡(luò)爬蟲會采取一定的爬行策略。 常用的爬行策略有:深度優(yōu)先策略、廣度優(yōu)先策略 [1] 。
1) 深度優(yōu)先策略:其基本方法是按照深度由低到高的順序,依次訪問下一級網(wǎng)頁鏈接,直到不能再深入為止。 爬蟲在完成一個(gè)爬行分支后返回到上一鏈接節(jié)點(diǎn)進(jìn)一步搜索其它鏈接。 當(dāng)所有鏈接遍歷完后,爬行任務(wù)結(jié)束。 這種策略比較適合垂直搜索或站內(nèi)搜索, 但爬行頁面內(nèi)容層次較深的站點(diǎn)時(shí)會造成資源的巨大浪費(fèi) [1] 。
2) 廣度優(yōu)先策略:此策略按照網(wǎng)頁內(nèi)容目錄層次深淺來爬行頁面,處于較淺目錄層次的頁面首先被爬行。 當(dāng)同一層次中的頁面爬行完畢后,爬蟲再深入下一層繼續(xù)爬行。 這種策略能夠有效控制頁面的爬行深度,避免遇到一個(gè)無窮深層分支時(shí)無法結(jié)束爬行的問題,實(shí)現(xiàn)方便,無需存儲大量中間節(jié)點(diǎn),不足之處在于需較長時(shí)間才能爬行到目錄層次較深的頁面 [1] 。
聚焦網(wǎng)絡(luò)爬蟲
聚焦網(wǎng)絡(luò)爬蟲(Focused Crawler),又稱主題網(wǎng)絡(luò)爬蟲(Topical Crawler),是指選擇性地爬行那些與預(yù)先定義好的主題相關(guān)頁面的網(wǎng)絡(luò)爬蟲[8]。 和通用網(wǎng)絡(luò)爬蟲相比,聚焦爬蟲只需要爬行與主題相關(guān)的頁面,極大地節(jié)省了硬件和網(wǎng)絡(luò)資源,保存的頁面也由于數(shù)量少而更新快,還可以很好地滿足一些特定人群對特定領(lǐng)域信息的需求 [1] 。
聚焦網(wǎng)絡(luò)爬蟲和通用網(wǎng)絡(luò)爬蟲相比,增加了鏈接評價(jià)模塊以及內(nèi)容評價(jià)模塊。聚焦爬蟲爬行策略實(shí)現(xiàn)的關(guān)鍵是評價(jià)頁面內(nèi)容和鏈接的重要性,不同的方法計(jì)算出的重要性不同,由此導(dǎo)致鏈接的訪問順序也不同 [1] 。
1) 基于內(nèi)容評價(jià)的爬行策略:DeBra將文本相似度的計(jì)算方法引入到網(wǎng)絡(luò)爬蟲中,提出了 Fish Search 算法,它將用戶輸入的查詢詞作為主題,包含查詢詞的頁面被視為與主題相關(guān),其局限性在于無法評價(jià)頁面與主題相關(guān) 度 的 高 低 。 Herseovic對 Fish Search 算 法 進(jìn) 行 了 改 進(jìn) ,提 出 了 Sharksearch 算法,利用空間向量模型計(jì)算頁面與主題的相關(guān)度大小 [1] 。
2) 基于鏈接結(jié)構(gòu)評價(jià)的爬行策略 :Web 頁面作為一種半結(jié)構(gòu)化文檔,包含很多結(jié)構(gòu)信息,可用來評價(jià)鏈接重要性。 PageRank 算法最初用于搜索引擎信息檢索中對查詢結(jié)果進(jìn)行排序,也可用于評價(jià)鏈接重要性,具體做法就是每次選擇 PageRank 值較大頁面中的鏈接來訪問。 另一個(gè)利用 Web結(jié)構(gòu)評價(jià)鏈接價(jià)值的方法是 HITS 方法,它通過計(jì)算每個(gè)已訪問頁面的 Authority 權(quán)重和 Hub 權(quán)重,并以此決定鏈接的訪問順序 [1] 。
3) 基于增強(qiáng)學(xué)習(xí)的爬行策略:Rennie 和 McCallum 將增強(qiáng)學(xué)習(xí)引入聚焦爬蟲,利用貝葉斯分類器,根據(jù)整個(gè)網(wǎng)頁文本和鏈接文本對超鏈接進(jìn)行分類,為每個(gè)鏈接計(jì)算出重要性,從而決定鏈接的訪問順序 [1] 。
4) 基于語境圖的爬行策略:Diligenti 等人提出了一種通過建立語境圖(Context Graphs)學(xué)習(xí)網(wǎng)頁之間的相關(guān)度,訓(xùn)練一個(gè)機(jī)器學(xué)習(xí)系統(tǒng),通過該系統(tǒng)可計(jì)算當(dāng)前頁面到相關(guān) Web 頁面的距離,距離越近的頁面中的鏈接優(yōu)先訪問。印度理工大學(xué)(IIT)和 IBM 研究中心的研究人員開發(fā)了一個(gè)典型的聚焦網(wǎng)絡(luò)爬蟲。 該爬蟲對主題的定義既不是采用關(guān)鍵詞也不是加權(quán)矢量,而是一組具有相同主題的網(wǎng)頁。 它包含兩個(gè)重要模塊:一個(gè)是分類器,用來計(jì)算所爬行的頁面與主題的相關(guān)度,確定是否與主題相關(guān);另一個(gè)是凈化器,用來識別通過較少鏈接連接到大量相關(guān)頁面的中心頁面 [1] 。
增量式網(wǎng)絡(luò)爬蟲
增量式網(wǎng)絡(luò)爬蟲(Incremental Web Crawler)是 指 對 已 下 載 網(wǎng) 頁 采 取 增 量式更新和只爬行新產(chǎn)生的或者已經(jīng)發(fā)生變化網(wǎng)頁的爬蟲,它能夠在一定程度上保證所爬行的頁面是盡可能新的頁面。 和周期性爬行和刷新頁面的網(wǎng)絡(luò)爬蟲相比,增量式爬蟲只會在需要的時(shí)候爬行新產(chǎn)生或發(fā)生更新的頁面 ,并不重新下載沒有發(fā)生變化的頁面,可有效減少數(shù)據(jù)下載量,及時(shí)更新已爬行的網(wǎng)頁,減小時(shí)間和空間上的耗費(fèi),但是增加了爬行算法的復(fù)雜度和實(shí)現(xiàn)難度。增量式網(wǎng)絡(luò)爬蟲的體系結(jié)構(gòu)[包含爬行模塊、排序模塊、更新模塊、本地頁面集、待爬行 URL 集以及本地頁面URL 集 [1] 。
增量式爬蟲有兩個(gè)目標(biāo):保持本地頁面集中存儲的頁面為最新頁面和提高本地頁面集中頁面的質(zhì)量。 為實(shí)現(xiàn)第一個(gè)目標(biāo),增量式爬蟲需要通過重新訪問網(wǎng)頁來更新本地頁面集中頁面內(nèi)容,常用的方法有:1) 統(tǒng)一更新法:爬蟲以相同的頻率訪問所有網(wǎng)頁,不考慮網(wǎng)頁的改變頻率;2) 個(gè)體更新法:爬蟲根據(jù)個(gè)體網(wǎng)頁的改變頻率來重新訪問各頁面;3) 基于分類的更新法:爬蟲根據(jù)網(wǎng)頁改變頻率將其分為更新較快網(wǎng)頁子集和更新較慢網(wǎng)頁子集兩類,然后以不同的頻率訪問這兩類網(wǎng)頁 [1] 。
為實(shí)現(xiàn)第二個(gè)目標(biāo),增量式爬蟲需要對網(wǎng)頁的重要性排序,常用的策略有:廣度優(yōu)先策略、PageRank 優(yōu)先策略等。IBM 開發(fā)的 WebFountain是一個(gè)功能強(qiáng)大的增量式網(wǎng)絡(luò)爬蟲,它采用一個(gè)優(yōu)化模型控制爬行過程,并沒有對頁面變化過程做任何統(tǒng)計(jì)假設(shè),而是采用一種自適應(yīng)的方法根據(jù)先前爬行周期里爬行結(jié)果和網(wǎng)頁實(shí)際變化速度對頁面更新頻率進(jìn)行調(diào)整。北京大學(xué)的天網(wǎng)增量爬行系統(tǒng)旨在爬行國內(nèi) Web,將網(wǎng)頁分為變化網(wǎng)頁和新網(wǎng)頁兩類,分別采用不同爬行策略。 為緩解對大量網(wǎng)頁變化歷史維護(hù)導(dǎo)致的性能瓶頸,它根據(jù)網(wǎng)頁變化時(shí)間局部性規(guī)律,在短時(shí)期內(nèi)直接爬行多次變化的網(wǎng)頁 ,為盡快獲取新網(wǎng)頁,它利用索引型網(wǎng)頁跟蹤新出現(xiàn)網(wǎng)頁 [1] 。
Deep Web 爬蟲
Web 頁面按存在方式可以分為表層網(wǎng)頁(Surface Web)和深層網(wǎng)頁(Deep Web,也稱 Invisible Web Pages 或 Hidden Web)。 表層網(wǎng)頁是指傳統(tǒng)搜索引擎可以索引的頁面,以超鏈接可以到達(dá)的靜態(tài)網(wǎng)頁為主構(gòu)成的 Web 頁面。Deep Web 是那些大部分內(nèi)容不能通過靜態(tài)鏈接獲取的、隱藏在搜索表單后的,只有用戶提交一些關(guān)鍵詞才能獲得的 Web 頁面。例如那些用戶注冊后內(nèi)容才可見的網(wǎng)頁就屬于 Deep Web。 2000 年 Bright Planet 指出:Deep Web 中可訪問信息容量是 Surface Web 的幾百倍,是互聯(lián)網(wǎng)上最大、發(fā)展最快的新型信息資源 [1] 。
Deep Web 爬蟲體系結(jié)構(gòu)包含六個(gè)基本功能模塊 (爬行控制器、解析器、表單分析器、表單處理器、響應(yīng)分析器、LVS 控制器)和兩個(gè)爬蟲內(nèi)部數(shù)據(jù)結(jié)構(gòu)(URL 列表、LVS 表)。 其中 LVS(Label Value Set)表示標(biāo)簽/數(shù)值集合,用來表示填充表單的數(shù)據(jù)源 [1] 。
Deep Web 爬蟲爬行過程中最重要部分就是表單填寫,包含兩種類型:
1) 基于領(lǐng)域知識的表單填寫:此方法一般會維持一個(gè)本體庫,通過語義分析來選取合適的關(guān)鍵詞填寫表單。 Yiyao Lu[25]等人提出一種獲取 Form 表單信息的多注解方法,將數(shù)據(jù)表單按語義分配到各個(gè)組中 ,對每組從多方面注解,結(jié)合各種注解結(jié)果來預(yù)測一個(gè)最終的注解標(biāo)簽;鄭冬冬等人利用一個(gè)預(yù)定義的領(lǐng)域本體知識庫來識別 Deep Web 頁面內(nèi)容, 同時(shí)利用一些來自 Web 站點(diǎn)導(dǎo)航模式來識別自動填寫表單時(shí)所需進(jìn)行的路徑導(dǎo)航 [1] 。
2) 基于網(wǎng)頁結(jié)構(gòu)分析的表單填寫: 此方法一般無領(lǐng)域知識或僅有有限的領(lǐng)域知識,將網(wǎng)頁表單表示成 DOM 樹,從中提取表單各字段值。 Desouky 等人提出一種 LEHW 方法,該方法將 HTML 網(wǎng)頁表示為DOM 樹形式,將表單區(qū)分為單屬性表單和多屬性表單,分別進(jìn)行處理;孫彬等人提出一種基于 XQuery 的搜索系統(tǒng),它能夠模擬表單和特殊頁面標(biāo)記切換,把網(wǎng)頁關(guān)鍵字切換信息描述為三元組單元,按照一定規(guī)則排除無效表單,將 Web 文檔構(gòu)造成 DOM 樹,利用 XQuery 將文字屬性映射到表單字段 [1] 。
Raghavan 等人提出的 HIWE 系統(tǒng)中,爬行管理器負(fù)責(zé)管理整個(gè)爬行過程,分析下載的頁面,將包含表單的頁面提交表單處理器處理,表單處理器先從頁面中提取表單,從預(yù)先準(zhǔn)備好的數(shù)據(jù)集中選擇數(shù)據(jù)自動填充并提交表單,由爬行控制器下載相應(yīng)的結(jié)果頁面 [1] 。