知名百科  > 所屬分類  >  其他科技   

網絡爬蟲

網絡爬蟲又稱網絡蜘蛛、網絡機器人和網絡追蹤器,是按照一定規則自動抓取互聯網信息的程序或腳本。它們廣泛用于互聯網搜索引擎或其他類似網站,可以自動收集所有可以訪問的頁面內容以獲取或更新這些網站的內容。網絡爬蟲可以從公共網頁中抓取數據,為金融分析和市場趨勢預測等不同領域提供數據支持。

網絡爬蟲技術起源于90年代初的搜索引擎。1994年初,美國華盛頓大學的師生開發了一種在互聯網上搜索信息的工具。該工具于1994年4月20日正式完成,是網絡爬蟲的雛形。隨著互聯網的發展,它們已經成為不可或缺的工具。現代爬蟲技術在搜索引擎中占據核心地位,其目的是提高爬行速度、擴大數據范圍和提高爬行精度。

從互聯網上收集信息是一項重要的任務,而爬蟲的出現在一定程度上取代了人工訪問網頁,實現了互聯網數據的自動收集,從而更高效地利用互聯網中的有效信息。基本爬蟲主要包括數據采集、處理和存儲。高級爬蟲引入了更復雜的技術,如并發編程或分布式技術,并配備了調度程序和后臺管理功能。根據數據的不同使用場景、爬行形式、存儲方式和實現方式,爬蟲還可以進一步細分為不同的類別。

目錄

歷史發展 編輯本段

背景

互聯網進入大數據時代以來,通過分析海量數據可以產生巨大的商業價值。數據市場充斥著各種數據,例如企業在生產經營中會產生大量與自身業務相關的數據,政府和機構也會發布一些公共數據。如果數據市場上沒有需要的數據,或者價格太高無法購買,那么可以使用爬蟲技術來抓取網站上的數據。搜索引擎和個人或單位都需要從公共網站上抓取大量數據。在這種需求下,爬蟲技術應運而生并迅速發展成為一項成熟的技術。

發展

隨著互聯網的興起,早期的網絡爬蟲作為搜索引擎的關鍵功能部分出現。1990年,阿奇搜索引擎的出現標志著網絡爬蟲研究的開始。后來在1993年,麻省理工學院(MIT)的馬修·格雷開發了一個名為萬維網漫游者(World wide Web Wanderer)的爬蟲系統,該系統可以統計互聯網中的服務器數量,為爬蟲系統的后續開發提供了一個非常重要的設計思路。隨著互聯網技術的發展,新的網絡爬蟲不斷涌現。1994年,出現了機器人、蜘蛛和爬蟲等自動跟蹤和索引程序。

網絡爬蟲技術的發展與搜索引擎的興起密切相關。1994年初,為了支持布萊恩·平克頓的項目,美國華盛頓大學的師生團隊開發了一種在互聯網上搜索信息的工具。該工具于1994年4月20日正式完成,被認為是現代網絡爬蟲的雛形。它是第一個網頁全文搜索引擎,使用廣度優先策略遍歷網頁。同年4月,楊致遠和斯坦福大學的大衛·費羅共同創立了雅虎,其搜索引擎后來成為一個有影響力的分類搜索引擎。隨后,Lycos、Infoseek、Metacrawler和HotBot等搜索引擎相繼推出。

1995年春,來自數字設備公司(DEC)的三名科學家開發了Altavista搜索引擎,并于同年12月開始提供信息檢索服務。這是使用爬蟲技術索引網頁的第一個例子之一。

1997年,分布式網絡爬蟲技術的出現進一步推動了搜索引擎技術的發展。同年年底,斯坦福大學的拉里·佩奇、謝爾蓋·布林、斯科特·哈桑和艾倫·斯特倫伯格共同開發了谷歌搜索引擎,開啟了由搜索引擎主導的互聯網新時代。謝爾蓋·布林和拉里·佩奇在1998年開發的PageRank算法極大地改善了搜索引擎的效果,后來成為谷歌爬蟲的著名算法。

2002年,開源網絡搜索引擎Apache Nutch發布。Nutch項目是網絡爬蟲的一個原型,通過開源代碼推動了網絡爬蟲技術的發展,促進了學術界和工業界對網絡爬蟲的研究和應用。

現狀

隨著技術的發展,網絡爬蟲經歷了從單一處理模式到分布式并行處理的顯著演變。起初,爬蟲技術僅限于捕獲靜態網頁信息,但后來發展到能夠處理動態和實時加載的頁面內容。數據爬行的范圍和準確性也得到了改進,從一般的爬行到更有針對性和更準確的目標數據爬行。尤其是在線社交網絡數據的抓取中,高效、準確的爬蟲程序成為獲取有價值數據的關鍵。

Google和AltaVista等著名搜索引擎采用的分布式網絡爬蟲系統通過在短時間內收集大量網頁,顯著提高了搜索引擎的效率。現代分布式網絡爬蟲主要采用主從分布模式,由一個中心控制節點將任務分配給從節點,使得爬蟲任務更加高效和集中。這些技術的發展不僅提高了爬蟲的功能性,而且拓寬了其應用范圍,使爬蟲成為獲取和處理大量網絡信息的重要工具。

自動爬蟲工具的出現進一步簡化了數據抓取過程,如Octopus Collector、ParseHub、WebHarvy等。這些工具通常操作簡單,功能多樣,可以更好地幫助用戶獲取更廣泛、更多類型的信息資源。

原理過程 編輯本段

基本原理

網絡爬蟲的原理基本相同,其基本功能是通過廣度優先搜索策略、深度優先搜索策略或最佳優先搜索策略遍歷網站資源,從而自動抓取萬維網上的信息。

一個基本的爬蟲通常分為三個部分:數據獲取(網頁下載)、數據處理(網頁分析)和數據存儲(持久有用信息)。更高級的爬蟲在收集和處理數據時會使用并發編程或分布式技術,這可能還包括調度程序和后臺管理程序(監視爬蟲的工作狀態并檢查數據爬行的結果)。

通用網絡爬蟲工作時需要一個或多個網頁的URL作為預定義的初始化值;從URL隊列中抓取URL作為初始值,解析DNS,獲取主機IP地址,最后下載URL對應的網頁并存儲在下載的網頁庫中。此外,這些URL被放入已爬網URL隊列中,通過解析已爬網網頁提取新URL,并對新URL進行重復數據刪除。如果不對它們進行去重,爬蟲將陷入無限循環而無法終止任務,并不斷提取當前頁面的URL作為新的URL并將其存儲在排序隊列中,直到滿足爬蟲的某個停止條件。

爬蟲算法

基本爬蟲算法使用包含統一資源定位器(URL)和選擇算法A的種子集S作為輸入。概括地說,算法A根據當前邊界列表確定下一個要爬行的文檔,該列表表示從網頁中提取的URL,這些是爬蟲程序最終可以爬行的候選頁面。選擇算法A決定了爬蟲用來發現資源的基本策略。例如,如果一個新的URL被添加到URL隊列的末尾,而算法A從隊列的頭部選擇一個文檔,則該策略對應于寬度優先算法。

抓取過程

網絡爬蟲的爬行過程如下:

手動選擇一些種子URL并將其放入要爬取的URL隊列中,也可以由用戶指定的一個或多個初始爬取頁面來決定。

根據初始URL地址爬取頁面后,將相應的網頁存儲在原始數據庫中,并在此過程中找到并獲取新的URL地址。

將新獲取的URL地址放入URL隊列進行重復數據刪除并跟蹤爬網進度。然而,由于網絡垃圾郵件、蜘蛛陷阱、主題偏好或隊列大小的實際限制,所有未訪問的URL在爬行期間都無法添加到URL隊列中。

從URL隊列中讀取新URL,根據新URL爬取網頁,同時從新網頁中獲取新URL,重復上述爬取過程。當隊列為空時,進程停止。空隊列不一定意味著爬蟲已經爬行了整個網絡,因為網絡不是強連接的,并且大多數隨機選擇的種子集無法到達許多頁面。

主要功能 編輯本段

客戶搜尋:銷售理財產品時,找到目標客戶及其聯系方式是關鍵。網絡爬蟲可以根據設定的營銷活動規則從互聯網上自動收集目標用戶的聯系信息。

數據收集:數據收集需要網絡爬蟲從目標網站上的網頁下載文本或圖片到指定位置。這個過程需要完成以下配置任務:下載網頁配置、解析網頁配置、批改結果配置和數據輸出配置。

搜索引擎:網絡爬蟲是搜索引擎的核心模塊。爬蟲幫助搜索引擎捕獲互聯網上的web信息,然后將信息存儲在原始web數據庫中。

網絡監控:網絡爬蟲可作為項目的數據監控系統。它通過抓取公開發布的數據和服務狀態(如基礎設施服務、平臺服務和軟件即服務)來提供有效的網絡監控和數據聚合,以滿足用戶對實時監控的需求。

信息推薦:網絡爬蟲可以在網絡上捕獲符合用戶偏好的相關信息并傳輸給用戶。在這個過程中,用戶無需任何操作即可滿足自己的個性化需求,節省了用戶的時間,提高了用戶的體驗滿意度。

數據挖掘:數據挖掘是以數據為研究對象的任務,任務的核心點是數據。爬蟲技術是收集網絡數據的好工具,因此網絡爬蟲也可以用來挖掘數據。

數據提供:在金融領域,可以使用網絡爬蟲收集數據資源,集中處理金融經濟的發展信息和相關數據,從而為經濟發展趨勢、金融投資和風險分析提供全面的數據支持。

廣告過濾:瀏覽網頁時,廣告信息頻繁出現,造成干擾。網絡爬蟲可以用來抓取網頁信息并自動過濾掉這些廣告,使信息閱讀更加方便。

數據分析:在網站上購買產品時需要了解暢銷品牌、價格趨勢等信息。對于普通用戶來說,手動統計數據既費時又不方便。網絡爬蟲可以很容易地收集這些數據進行深入分析。

系統分類 編輯本段

根據使用場景

通用爬蟲是搜索引擎爬行系統的重要組成部分,而聚焦爬蟲是一種“滿足特定主題需求”的網絡爬蟲程序。

通用爬行動物:通用爬蟲又稱全網爬蟲,旨在盡可能高效地抓取互聯網上的各種網頁數據,并進行存儲和檢索,主要為門戶搜索引擎和大規模Web服務收集數據。這類網絡爬蟲的爬取范圍和數量巨大,要求爬取速度快、存儲空間大,爬取頁面的順序較低。通常并行工作,但刷新頁面需要很長時間。通用網絡爬蟲適用于搜索廣泛的主題,具有很強的應用價值。基于通用網絡爬蟲的搜索引擎大多提供基于關鍵詞的檢索,難以支持基于語義信息的查詢,無法準確理解用戶的具體需求。針對這些情況,聚焦網絡爬蟲技術得到了廣泛應用。

搜索引擎:焦點爬蟲,也稱為主題網絡爬蟲,是一種“面向特定主題需求”的網絡爬蟲程序,它將有選擇地爬行那些與預定義主題相關的網絡爬蟲。聚焦爬蟲工作的基本目標是通過編寫爬蟲程序,從一個或多個初始URL開始,獲取符合某個主題的特定網頁的URL,然后根據這些URL抓取網頁內容并從中提取有價值的信息,這些信息將用于進一步的數據分析。與一般爬蟲相比,聚焦爬蟲只需抓取與主題相關的頁面,大大節省了硬件和網絡資源;保存的頁面也因為數量少而更新很快,可以很好地滿足一些特定人群對特定領域信息的需求。

按搜索形式劃分

累積爬蟲用于數據集的整體建立或大規模更新,而增量爬蟲主要針對數據集的日常維護和實時更新。

累積爬行動物:累積爬蟲是指從某個時間點開始遍歷允許系統存儲和處理的所有網頁。累積爬蟲常用于數據集的整體建立或大規模更新。在理想的軟硬件環境下,經過足夠的運行時間后,累積爬取的策略可以保證爬取相當多的網頁集合。然而,由于Web數據的動態特性,集合中網頁的爬取時間不同,更新頁面的情況也不同,因此累積爬取的網頁集合無法與真實環境中的網絡數據保持一致。

增量爬行動物:增量爬蟲是指具有一定規模的網頁集合,通過更新數據來選擇現有集合中過時的網頁進行爬取,以保證爬取的數據足夠接近真實的網絡數據。增量爬蟲主要針對數據集的日常維護和實時更新。增量爬取的前提是系統已經爬取了足夠數量的網絡頁面,并且擁有這些被爬取頁面的時間信息。與周期性抓取和刷新頁面的網絡爬蟲相比,增量爬蟲只在必要時抓取新生成或更新的頁面,不重新下載未更改的頁面,可以有效減少數據下載量,及時更新抓取的頁面,減少時間和空間消耗,但增加了抓取算法的復雜度和實現難度。

根據數據抓取方式

網頁根據其存在形式可以分為表層網頁和深層網頁。這兩種網頁的爬蟲分別稱為表面爬蟲和深度爬蟲。

表面爬行動物:爬取表面網頁的爬蟲稱為表面爬蟲。表面頁面是指可以被傳統搜索引擎索引的頁面,網頁主要由可以通過超鏈接到達的靜態頁面組成。

深層爬行動物:爬取深度網頁的爬蟲稱為深度爬蟲。深度網頁是那些大部分內容無法通過靜態鏈接獲得并隱藏在搜索表單后面的網頁,只有用戶提交一些關鍵字才能獲得。例如,在用戶注冊之前內容不可見的網頁就是深度網頁。因此,deep web爬蟲最重要的部分是表單填寫部分,需要模擬人類行為來分析、填寫和提交表單,并最終從返回的頁面中提取所需的內容并將其添加到搜索引擎中參與索引,從而為用戶提供搜索。深度爬蟲與常規爬蟲的區別在于,深度爬蟲在下載頁面后不會立即遍歷所有超鏈接,而是使用一定的算法對其進行分類,針對不同類別采用不同的方法計算查詢參數,并再次提交給服務器。如果提交的查詢參數是正確的,您將獲得隱藏的頁面和鏈接。

按實施模式劃分

集中式爬蟲可用于個人的中小型數據收集,分布式爬蟲可用于企業的大規模數據收集。

集中式爬行動物:在給出初始URL后,集中式網絡爬蟲可以通過單線程或多線程解析URL并提取頁面內容,并將信息存儲在本地以供分析,并將網頁中其他頁面的URL保存在隊列中以供后續訪問。集中式爬蟲在單臺計算機上運行,可用于個人的中小型數據采集。

分布式爬蟲:分布式網絡爬蟲可以看作是多個集中式網絡爬蟲的組合,分布式系統中的每個節點都可以看作是一個集中式網絡爬蟲。分布式爬蟲的工作原理與集中式爬蟲基本相同,但分布式爬蟲需要所有節點協作來抓取網頁,這使得分布式爬蟲的效率遠高于集中式爬蟲。分布式爬蟲系統結構多種多樣,工作模式也各不相同。對于典型的分布式爬蟲系統,每個節點不僅從網頁中獲取URL,還從其他節點接收URL。然后節點解析該URL對應的網頁,并將不屬于自己爬取范圍的URL轉發給其他節點。分布式爬蟲可以在多臺計算機上實現協同爬行,可用于企業大規模數據采集。

系統協議 編輯本段

Robots協議

在搜索引擎抓取網站之前,有必要在一定程度上了解目標網站的規模和結構。此時,您可以通過網站本身提供的robots.txt和Sitemap.xml文件獲得幫助。例如,一些網站不希望爬蟲是白色的,以免影響這些網站的正常對外公共服務。此時爬蟲需要遵循禮貌原則,從而與更多網站建立友好關系。

Robots協議(也稱為爬蟲協議、機器人協議等。)就是“Robots Exclusion Protocol”,這是互聯網領域常見的道德規范。它基于以下原則:搜索技術應為人類服務,同時尊重信息提供者的意愿并保護其隱私權。網站有義務保護用戶的個人信息和隱私不受侵犯。該網站通過一個符合robots協議的robots.txl文件告訴搜索引擎哪些頁面可以被抓取,哪些頁面不能被抓取。

Robots.txl文件是搜索引擎訪問網站時首先查看的文件,這將限制網絡爬蟲的訪問范圍。當網絡爬蟲訪問一個網站時,它將首先檢查該網站的根目錄中是否有robots.txt文件。如果文件存在,網絡爬蟲會根據文件內容確定訪問范圍;如果該文件不存在,則所有網絡爬蟲都可以訪問網站上沒有密碼保護的所有頁面。

網站地圖協議

Sitemaps協議使網站能夠通知搜索引擎可以抓取的網址,從而使搜索引擎可以更方便地抓取網站。Sitemap.xml是一個xml格式文件,包含網站的所有鏈接(URU)。簡單來說,sitemap就是一個網站地圖。

網站地圖(Sitemap.xml)文件為了方便網站管理員通知爬蟲遍歷和更新網站內容,而無需抓取每個頁面,網站提供了一個網站地圖(Sitemap.xml)文件。在Sitemap.xml文件中,列出了網站中的網站以及每個網站的其他元數據,例如上次更新時間、更改頻率以及相對于網站上其他網站的重要性,以便爬蟲可以更智能地抓取網站。

爬蟲系統 編輯本段

爬蟲的體系結構描述了整個系統的設計和組織,而爬蟲的框架則是用于開發和實現爬蟲的軟件工具、庫或框架。架構指導框架的設計,框架實現架構的模塊,而框架提供開發工具來支持架構的實現。

爬蟲架構

一個簡單的爬蟲架構由URL管理器、網頁下載器和網頁解析器組成。爬蟲調度器用于啟動、執行、停止爬蟲,或者監視爬蟲中的運行情況。爬蟲程序中有三個核心模塊:URL管理器,用于管理待爬取的URL數據和已爬取的URL數據;網頁下載器下載與URL管理器中提供的URL相對應的網頁,并將其存儲為字符串。該字符串將被發送到網頁分析器進行分析;一方面,網頁解析器將解析有價值的數據,另一方面,由于每個頁面都有許多指向其他頁面的網頁,這些URL可以在解析后添加到URL管理器中。

關鍵技術 編輯本段

信息提取

信息抽取是從結構化或半結構化網頁中識別和提取HTML標簽中嵌入的信息的關鍵技術,在使用爬蟲程序獲取數據時尤為重要。該技術根據提取方法的不同可以分為幾種主要類型,每種方法都有其特點和適用場景。這些方法是爬取web數據的核心環節,決定了爬取的效率和數據的質量。

選擇合適的信息抽取方法是有效數據抓取的關鍵。例如,基于網頁結構的方法通過將網頁解析為DOM樹(文檔對象模型樹)來提取內容,這種方法很簡單,但需要了解網頁結構。此外,還有其他類型的方法,它們使用不同的特征和策略來提取數據,并且可以適應各種場景和需求。

頁面解析

爬蟲使用URL或requests等模塊發起HTTP請求來獲取網頁的源代碼,但其工作只是一小部分,然后還需要分析網頁。正則表達式、BeautifulSoup、XPath、CSS選擇器、PyQuery和Scrapy都是分析網頁的常用方法。

網絡爬蟲網絡爬蟲

正則表達式:正則表達式是分析和提取web內容的最有效方法之一。正則表達式是字符串處理的強大工具,它使用預定義的模式匹配一類具有共同特征的字符串,可以快速準確地完成搜索和替換等復雜的處理需求,具有比字符串本身提供的方法更強大的處理功能。

beautiful Soup:抓取頁面后,beautiful Soup可以處理返回的HTML字符串(或列表)并匹配一部分所需數據。BeautifulSoup是一個優秀的Python擴展庫,它可以從HTML或XML文件中提取數據,并允許指定不同的解析器。

XPath:在Python程序中,可以使用XPath解析爬蟲數據。XPath不僅提供簡潔的路徑選擇表達式,還提供數百個內置函數來處理字符串、值、序列、時間匹配和節點。

CSS選擇器:使用CSS選擇器,您可以輕松地向元素添加樣式,而無需更改HTML結構。僅僅通過添加不同的CSS規則,網頁的結構和呈現風格就完全分離了,你可以得到各種不同風格的網頁。

PyQuery:在Python程序中,可以使用庫PyQuery來解析HTML文件的內容。PyQuery是JS框架jQuery的Python版本,通過Python語言模仿jQuery的源代碼實現,其語法與jQuery幾乎相同。

Scrapy:Scrapy是一個多線程的爬蟲框架,它的爬蟲文件可以用來定制自己的頁面解析規則,從特定的網頁中提取自己需要的信息。

數據清理

數據清洗是對爬蟲獲取的數據源進行處理的關鍵步驟,旨在消除不完整和無效的數據,從而保證數據分析的準確性和有效性。在大數據環境下,由于大數據通常具有體量大、多維度、格式復雜、準確率低等特點,直接使用它進行分析可能并不合適。因此,高質量的數據清洗不僅有助于提升數據價值,而且對確保分析結果的客觀性和可靠性非常重要。

應付策略 編輯本段

隨著搜索引擎的普及,網絡爬蟲技術得到了廣泛應用。由于頻繁的請求和重復的爬行,許多爬蟲給中小型網站帶來了壓力,導致訪問緩慢甚至中斷,因此許多網站都實施了反爬行措施。面對這些措施,爬蟲程序需要采用模擬用戶行為和使用代理等策略來成功抓取數據。

設置用戶代理:User-Agent代表用戶代理,是HTTP(超文本傳輸協議)協議中的一個字段。其作用是描述發送HTTP請求的終端信息,服務器通常通過該字段判斷訪問網站的對象。每個常規爬蟲都有一個固定的用戶代理,只要該字段設置為知名用戶代理,就不建議偽裝知名爬蟲,因為這些爬蟲很可能有固定的IP,例如百度爬蟲有自己的固定IP,會被識破并偽裝。

代理池:如果網站通過某段時間內IP訪問的數量來判斷爬蟲的行為并阻止相應的IP,那么僅依靠用戶代理設置是不夠的。為了處理單個IP的訪問限制,可以使用代理池來解決。代理池是一個包含大量代理IP的隊列,它可以支持網絡爬蟲從中選擇IP進行爬行任務,并在遇到屏蔽時快速替換新的IP,從而不間斷地繼續爬行任務。結合多線程技術,該方法可以有效提高爬蟲的爬行效率。

降低訪問頻率:如果找不到免費且穩定的代理IP,可以降低訪問網站的頻率,這可以達到與用戶代理相同的效果,并防止對方從訪問中識別爬蟲的身份,但爬行效率會差很多。為了彌補這一缺點,我們可以基于這一思路及時調整具體操作。例如,每次抓取頁面時休息幾秒鐘,或者限制每天抓取的頁面數量。

驗證碼限制:盡管有些網站無需登錄即可訪問,但當檢測到異常IP流量時,將需要驗證碼來驗證用戶身份。基于這種情況,常見的應對方法是使用機器學習對驗證碼樣本進行學習,直到其達到較高的識別率,然后將學習結果與爬蟲程序相結合來應對這種情況。

附件列表


0

詞條內容僅供參考,如果您需要解決具體問題
(尤其在法律、醫學等領域),建議您咨詢相關領域專業人士。

如果您認為本詞條還有待完善,請 編輯

上一篇 刷機    下一篇 注冊表

標簽

同義詞

暫無同義詞
主站蜘蛛池模板: 波多野结衣被三个小鬼| 日韩欧美aⅴ综合网站发布| 日本中文字幕一区二区有码在线| 欧美jizz18性欧美| 师尊要被cao坏了by谦野| 国产日韩精品欧美一区喷水| 人妻有码中文字幕| 久久久久亚洲av片无码| 久久天天躁狠狠躁夜夜2020一 | 一级片黄色免费| 成人福利免费视频| 正能量www正能量免费网站| 成年女人免费碰碰视频| 国产欧美一区二区三区在线看 | 日韩欧美亚洲综合久久| 国产成人永久免费视频| 亚洲欧洲国产精品久久| 一区二区三区波多野结衣| 黄色免费网站在线看| 波多野结衣变态夫妻| 国产麻豆免费观看91| 免费看黄色视屏| 中文精品久久久久人妻| 欧美交换性一区二区三区| 污污的文章让人起反应的| 好大好硬好爽免费视频| 四虎成人免费大片在线| 久久综合九九亚洲一区| 香蕉伊思人在线精品| 男女下面的一进一出视频| 日产乱码卡一卡2卡3视频| 国产女人视频免费观看| 亚洲五月综合网色九月色| 97国产免费全部免费观看| 精品精品国产自在97香蕉| 日本边添边摸边做边爱的网站| 国产福利在线观看视频| 亚洲国产午夜精品理论片 | 插我一区二区在线观看| 国产在线jyzzjyzz免费麻豆| 乱系列中文字幕在线视频|