A. 大數據爬蟲技術有什麼功能
網路爬蟲是Spider(或Robots、Crawler)等詞的意譯,是一種高效的信息抓取工具,它集成了搜索引擎技術,並通過技術手段進行優化,用以從互聯網搜索、抓取並保存任何通過HTML(超文本標記語言)進行標准化的網頁信息。其作用機理是:發送請求給互聯網特定站點,在建立連接後與該站點交互,獲取HTML格式的信息,隨後轉移到下一個站點,並重復以上流程。通過這種自動化的工作機制,將目標數據保存在本地數據中,以供使用。網路爬蟲在訪問一個超文本鏈接時,可以從HTML標簽中自動獲取指向其他網頁的地址信息,因而可以自動實現高效、標准化的信息獲取。隨著互聯網在人類經濟社會中的應用日益廣泛,其所涵蓋的信息規模呈指數增長,信息的形式和分布具有多樣化、全球化特徵,傳統搜索引擎技術已經無法滿足日益精細化、專業化的信息獲取和加工需求,正面臨著巨大的挑戰。網路爬蟲自誕生以來,就發展迅猛,並成為信息技術領域的主要研究熱點。當前,主流的網路爬蟲搜索策略有如下幾種。
B. 網路爬蟲是什麼具體要學哪些內容
網路爬蟲是從網路上獲取數據信息的程序。需要了解前端div標簽,正則內容,Python模塊庫,多線程等。
C. 現在的網路爬蟲的研究成果和存在的問題有哪些
網路爬蟲是Spider(或Robots、Crawler)等詞的意譯,是一種高效的信息抓取工具,它集成了搜索引擎技術,並通過技術手段進行優化,用以從互聯網搜索、抓取並保存任何通過HTML(超文本標記語言)進行標准化的網頁信息。
其作用機理是:發送請求給互聯網特定站點,在建立連接後與該站點交互,獲取HTML格式的信息,隨後轉移到下一個站點,並重復以上流程。通過這種自動化的工作機制,將目標數據保存在本地數據中,以供使用。網路爬蟲在訪問一個超文本鏈接時,可以從HTML標簽中自動獲取指向其他網頁的地址信息,因而可以自動實現高效、標准化的信息獲取。
隨著互聯網在人類經濟社會中的應用日益廣泛,其所涵蓋的信息規模呈指數增長,信息的形式和分布具有多樣化、全球化特徵,傳統搜索引擎技術已經無法滿足日益精細化、專業化的信息獲取和加工需求,正面臨著巨大的挑戰。網路爬蟲自誕生以來,就發展迅猛,並成為信息技術領域的主要研究熱點。當前,主流的網路爬蟲搜索策略有如下幾種。
>>>>
深度優先搜索策略
早期的爬蟲開發採用較多的搜索策略是以深度優先的,即在一個HTML文件中,挑選其中一個超鏈接標簽進行深度搜索,直至遍歷這條超鏈接到最底層時,由邏輯運算判斷本層搜索結束,隨後退出本層循環,返回上層循環並開始搜索其他的超鏈接標簽,直至初始文件內的超鏈接被遍歷。
深度優先搜索策略的優點是可以將一個Web站點的所有信息全部搜索,對嵌套較深的文檔集尤其適用;而缺點是在數據結構日益復雜的情況下,站點的縱向層級會無限增加且不同層級之間會出現交叉引用,會發生無限循環的情況,只有強行關閉程序才能退出遍歷,而得到的信息由於大量的重復和冗餘,質量很難保證。
>>>>
寬度優先搜索策略
與深度優先搜索策略相對應的是寬度優先搜索策略,其作用機理是從頂層向底層開始循環,先就一級頁面中的所有超鏈接進行搜索,完成一級頁面遍歷後再開始二級頁面的搜索循環,直到底層為止。當某一層中的所有超鏈接都被選擇過,才會基於該層信息檢索過程中所獲得的下一級超鏈接(並將其作為種子)開始新的一輪檢索,優先處理淺層的鏈接。
這種模式的一個優點是:無論搜索對象的縱向結構層級有多麼復雜,都會極大程度上避免死循環;另一個優勢則在於,它擁有特定的演算法,可以找到兩個HTML文件間最短的路徑。一般來講,我們期望爬蟲所具有的大多數功能目前均可以採用寬度優先搜索策略較容易的實現,所以它被認為是最優的。
但其缺點是:由於大量時間被耗費,寬度優先搜索策略則不太適用於要遍歷特定站點和HTML文件深層嵌套的情況。
>>>>
聚焦搜索策略
與深度優先和寬度優先不同,聚焦搜索策略是根據「匹配優先原則」對數據源進行訪問,基於特定的匹配演算法,主動選擇與需求主題相關的數據文檔,並限定優先順序,據以指導後續的數據抓取。
這類聚焦爬蟲針對所訪問任何頁面中的超鏈接都會判定一個優先順序評分,根據評分情況將該鏈接插入循環隊列,此策略能夠幫助爬蟲優先跟蹤潛在匹配程度更高的頁面,直至獲取足夠數量和質量的目標信息。不難看出,聚焦爬蟲搜索策略主要在於優先順序評分模型的設計,亦即如何區分鏈接的價值,不同的評分模型針對同一鏈接會給出不同的評分,也就直接影響到信息搜集的效率和質量。
同樣機制下,針對超鏈接標簽的評分模型自然可以擴展到針對HTML頁面的評價中,因為每一個網頁都是由大量超鏈接標簽所構成的,一般看來,鏈接價值越高,其所在頁面的價值也越高,這就為搜索引擎的搜索專業化和應用廣泛化提供了理論和技術支撐。當前,常見的聚焦搜索策略包括基於「鞏固學習」和「語境圖」兩種。
從應用程度來看,當前國內主流搜索平台主要採用的是寬度優先搜索策略,主要是考慮到國內網路系統中信息的縱向價值密度較低,而橫向價值密度較高。但是這樣會明顯地遺漏到一些引用率較小的網路文檔,並且寬度優先搜索策略的橫向價值富集效應,會導致這些鏈接量少的信息源被無限制的忽略下去。
而在此基礎上補充採用線性搜索策略則會緩解這種狀況,不斷引入更新的數據信息到已有的數據倉庫中,通過多輪的價值判斷去決定是否繼續保存該信息,而不是「簡單粗暴」地遺漏下去,將新的信息阻滯在密閉循環之外。
>>>>
網頁數據動態化
傳統的網路爬蟲技術主要局限於對靜態頁面信息的抓取,模式相對單一,而近年來,隨著Web2.0/AJAX等技術成為主流,動態頁面由於具有強大的交互能力,成為網路信息傳播的主流,並已取代了靜態頁面成為了主流。AJAX採用了JavaScript驅動的非同步(非同步)請求和響應機制,在不經過網頁整體刷新的情況下持續進行數據更新,而傳統爬蟲技術缺乏對JavaScript語義的介面和交互能力,難以觸發動態無刷新頁面的非同步調用機制並解析返回的數據內容,無法保存所需信息。
此外,諸如JQuery等封裝了JavaScript的各類前端框架會對DOM結構進行大量調整,甚至網頁上的主要動態內容均不必在首次建立請求時就以靜態標簽的形式從伺服器端發送到客戶端,而是不斷對用戶的操作進行回應並通過非同步調用的機制動態繪制出來。這種模式一方面極大地優化了用戶體驗,另一方面很大程度上減輕了伺服器的交互負擔,但卻對習慣了DOM結構(相對不變的靜態頁面)的爬蟲程序提出了巨大挑戰。
傳統爬蟲程序主要基於「協議驅動」,而在互聯網2.0時代,基於AJAX的動態交互技術環境下,爬蟲引擎必須依賴「事件驅動」才有可能獲得數據伺服器源源不斷的數據反饋。而要實現事件驅動,爬蟲程序必須解決三項技術問題:第一,JavaScript的交互分析和解釋;第二,DOM事件的處理和解釋分發;第三,動態DOM內容語義的抽取。
前嗅的ForeSpider數據採集系統全方位支持各種動態網站,大部分網站通過可視化的操作就可以獲取。對於反爬蟲機制嚴格的網站,通過ForeSpider內部的腳本語言系統,通過簡單的腳本語言,就可以輕松獲取。
>>>>
數據採集分布化
分布式爬蟲系統是在計算機集群之上運轉的爬蟲系統,集群每一個節點上運行的爬蟲程序與集中式爬蟲系統的工作原理相同,所不同的是分布式需要協調不同計算機之間的任務分工、資源分配、信息整合。分布式爬蟲系統的某一台計算機終端中植入了一個主節點,並通過它來調用本地的集中式爬蟲進行工作,在此基礎上,不同節點之間的信息交互就顯得十分重要,所以決定分布式爬蟲系統成功與否的關鍵在於能否設計和實現任務的協同。
此外,底層的硬體通信網路也十分重要。由於可以採用多節點抓取網頁,並能夠實現動態的資源分配,因此就搜索效率而言,分布式爬蟲系統遠高於集中式爬蟲系統。
經過不斷的演化,各類分布式爬蟲系統在系統構成上各具特色,工作機制與存儲結構不斷推陳出新,但主流的分布式爬蟲系統普遍運用了「主從結合」的內部構成,也就是由一個主節點通過任務分工、資源分配、信息整合來掌控其他從節點進行信息抓取。
在工作方式上,基於雲平台的廉價和高效特點,分布式爬蟲系統廣泛採用雲計算方式來降低成本,大規模降低軟硬體平台構建所需要的成本投入。在存儲方式方面,當前比較流行的是分布式信息存儲,即將文件存儲在分布式的網路系統上,這樣管理多個節點上的數據更加方便。通常情況下使用的分布式文件系統為基於Hadoop的HDFS系統。
目前市場上的可視化通用性爬蟲,大都犧牲了性能去換取簡易的可視化操作。但前嗅的ForeSpider爬蟲不是。ForeSpider採用C++編程,普通台式機日採集量超過500萬條/天,伺服器超過4000萬條/天。是市場上其他可視化爬蟲的10倍以上。同時,ForeSpider內嵌前嗅自主研發的ForeLib資料庫,免費的同時支持千萬量級以上的數據存儲。
>>>>
通用型和主題型網路爬蟲
依據採集目標的類型,網路爬蟲可以歸納為「通用型網路爬蟲」和「主題型網路爬蟲」兩種。
通用型網路爬蟲側重於採集更大的數據規模和更寬的數據范圍,並不考慮網頁採集的順序和目標網頁的主題匹配情況。在當前網路信息規模呈現指數增長的背景下,通用型網路爬蟲的使用受到信息採集速度、信息價值密度、信息專業程度的限制。
為緩解這種狀況,主題型網路爬蟲誕生了。不同於通用型網路爬蟲,主題型網路爬蟲更專注採集目標與網頁信息的匹配程度,避免無關的冗餘信息,這一篩選過程是動態的,貫穿於主題型網路爬蟲技術的整個工作流程。
目前市面上的通用性爬蟲的採集能力有限,採集能力不高,網頁結構復雜的頁面無法採集。前嗅ForeSpider爬蟲是通用型的網路爬蟲,可以採集幾乎100%的網頁,並且內部支持可視化篩選、正則表達式、腳本等多種篩選,可以100%過濾無關冗餘內容,按條件篩選內容。相對主題型爬蟲只能採集一類網站而言,通用型的爬蟲有著更強的採集范圍,更加經濟合理。
D. Python有哪些常見的,好用的爬蟲框架
網路爬蟲的抓取策略有很多種,按照系統結構和實現技術,大致可以分為以下幾種:通用網路爬蟲(GeneralPurposeWebCrawler)、聚焦網路爬蟲(FocusedWebCrawler)、增量式網路爬蟲(IncrementalWebCrawler)、深層網路爬蟲(DeepWebCrawler)。
增量式網路爬蟲是指對已下載網頁採取增量式更新和只爬行新產生的或者已經發生變化網頁的爬蟲,它能夠在一定程度上保證所爬行的頁面是盡可能新的頁面。
一般網路爬蟲的爬行范圍和數量很大,爬行速度和存儲空間要求很高,爬行頁面的順序也比較低。同時,由於需要刷新的頁面太多,通常採用並行工作,但刷新一頁需要很長時間。
聚焦網路爬蟲是指選擇性地爬行與預定義主題相關的網路爬蟲。與普通網路爬蟲相比,聚焦爬蟲只需爬行與主題相關的網頁,大大節省了硬體和網路資源,保存的網頁也因數量少而更新快,還能很好地滿足一些特定人群對特定領域信息的需求。
DeepWeb爬蟲,也就是深層網頁爬蟲,在深層網頁容量是表層網頁的數百倍,是互聯網上最大、發展最快的新信息資源。
E. 怎麼用VBA或網路爬蟲程序抓取網站數據
VBA網抓常用方法
1、xmlhttp/winhttp法:
用xmlhttp/winhttp模擬向伺服器發送請求,接收伺服器返回的數據。
優點:效率高,基本無兼容性問題。
缺點:需要藉助如fiddler的工具來模擬http請求。
2、IE/webbrowser法:
創建IE控制項或webbrowser控制項,結合htmlfile對象的方法和屬性,模擬瀏覽器操作,獲取瀏覽器頁面的數據。
優點:這個方法可以模擬大部分的瀏覽器操作。所見即所得,瀏覽器能看到的數據就能用代碼獲取。
缺點:各種彈窗相當煩人,兼容性也確實是個很傷腦筋的問題。上傳文件在IE里根本無法實現。
3、QueryTables法:
因為它是excel自帶,所以勉強也算是一種方法。其實此法和xmlhttp類似,也是GET或POST方式發送請求,然後得到伺服器的response返回到單元格內。
優點:excel自帶,可以通過錄制宏得到代碼,處理table很方便
。代碼簡短,適合快速獲取一些存在於源代碼的table里的數據。
缺點:無法模擬referer等發包頭
也可以利用採集工具進行採集網頁端的數據,無需寫代碼。
F. 網路爬蟲技術的概述與研究
爬蟲技術概述
網路爬蟲(Web crawler),是一種按照一定的規則,自動地抓取萬維網信息的程序或者腳本,它們被廣泛用於互聯網搜索引擎或其他類似網站,可以自動採集所有其能夠訪問到的頁面內容,以獲取或更新這些網站的內容和檢索方式。從功能上來講,爬蟲一般分為數據採集,處理,儲存三個部分。
傳統爬蟲從一個或若干初始網頁的URL開始,獲得初始網頁上的URL,在抓取網頁的過程中,不斷從當前頁面上抽取新的URL放入隊列,直到滿足系統的一定停止條件。聚焦爬蟲的工作流程較為復雜,需要根據一定的網頁分析演算法過濾與主題無關的鏈接,保留有用的鏈接並將其放入等待抓取的URL隊列。然後,它將根據一定的搜索策略從隊列中選擇下一步要抓取的網頁URL,並重復上述過程,直到達到系統的某一條件時停止。另外,所有被爬蟲抓取的網頁將會被系統存貯,進行一定的分析、過濾,並建立索引,以便之後的查詢和檢索;對於聚焦爬蟲來說,這一過程所得到的分析結果還可能對以後的抓取過程給出反饋和指導。
相對於通用網路爬蟲,聚焦爬蟲還需要解決三個主要問題:
(1) 對抓取目標的描述或定義;
(2) 對網頁或數據的分析與過濾;
(3) 對URL的搜索策略。
G. 蜘蛛爬行策略有哪些
1、深度優先(策略):一直往前爬,直到沒有鏈接,再返回第一層爬向下一個入口
2、廣度優先(策略):先把這一層所有入口爬完,再爬下一層。
3、吸引蜘蛛:
1)搜索引擎認為重要的頁面爬行深度高,會有更多頁面被收錄 2)頁面更新度,有規律
3)、導入鏈接數量0(導入到自己網站頁面的鏈接)
4)、與首頁點擊距離
5)、c結構(鏈接比較好)
4、地址庫:為了避免重復查詢或抓取網址,搜索引擎會建立一個地址庫記錄已經被發現、但還沒被抓取的頁面,以及被抓取的頁面。
1)來源、人工錄入的種子網站。
2)、蜘蛛抓取頁面後,從HTML中解析出新的鏈接URL,與地址庫中的資料庫相比,如果是地址庫中沒有的網址,就存入待訪問的的地址庫。
3)、站長通過搜索引擎頁面提交表格提交進來的網址
4)、站長通過XML網站地圖、站長平台提交的網址
H. 如何應對網站反爬蟲策略如何高效地爬大量數據
一般有一下幾種
一些常用的方法
IP代理
對於IP代理,各個語言的Native Request API都提供的IP代理響應的API, 需要解決的主要就是IP源的問題了.
網路上有廉價的代理IP(1元4000個左右), 我做過簡單的測試, 100個IP中, 平均可用的在40-60左右, 訪問延遲均在200以上.
網路有高質量的代理IP出售, 前提是你有渠道.
因為使用IP代理後, 延遲加大, 失敗率提高, 所以可以將爬蟲框架中將請求設計為非同步, 將請求任務加入請求隊列(RabbitMQ,Kafka,Redis), 調用成功後再進行回調處理, 失敗則重新加入隊列. 每次請求都從IP池中取IP, 如果請求失敗則從IP池中刪除該失效的IP.
Cookies
有一些網站是基於cookies做反爬蟲, 這個基本上就是如 @朱添一 所說的, 維護一套Cookies池
注意研究下目標網站的cookies過期事件, 可以模擬瀏覽器, 定時生成cookies
限速訪問
像開多線程,循環無休眠的的暴力爬取數據, 那真是分分鍾被封IP的事, 限速訪問實現起來也挺簡單(用任務隊列實現), 效率問題也不用擔心, 一般結合IP代理已經可以很快地實現爬去目標內容.
一些坑
大批量爬取目標網站的內容後, 難免碰到紅線觸發對方的反爬蟲機制. 所以適當的告警提示爬蟲失效是很有必有的.
一般被反爬蟲後, 請求返回的HttpCode為403的失敗頁面, 有些網站還會返回輸入驗證碼(如豆瓣), 所以檢測到403調用失敗, 就發送報警, 可以結合一些監控框架, 如Metrics等, 設置短時間內, 告警到達一定閥值後, 給你發郵件,簡訊等.
當然, 單純的檢測403錯誤並不能解決所有情況. 有一些網站比較奇葩, 反爬蟲後返回的頁面仍然是200的(如去哪兒), 這時候往往爬蟲任務會進入解析階段, 解析失敗是必然的. 應對這些辦法, 也只能在解析失敗的時候, 發送報警, 當告警短時間到達一定閥值, 再觸發通知事件.
當然這個解決部分並不完美, 因為有時候, 因為網站結構改變, 而導致解析失敗, 同樣回觸發告警. 而你並不能很簡單地區分, 告警是由於哪個原因引起的.
I. 網路爬蟲採用的是哪種演算法策略
在爬蟲系統中,待抓取URL隊列是很重要的一部分。待抓取URL隊列中的URL以什麼樣的順序排列也是一個很重要的問題,因為這涉及到先抓取那個頁面,後抓取哪個頁面。而決定這些URL排列順序的方法,叫做抓取策略。下面重點介紹幾種常見的抓取策略:
1.深度優先遍歷策略
深度優先遍歷策略是指網路爬蟲會從起始頁開始,一個鏈接一個鏈接跟蹤下去,處理完這條線路之後再轉入下一個起始頁,繼續跟蹤鏈接。我們以下面的圖為例: 遍歷的路徑:A-F-G E-H-I B C D 2.寬度優先遍歷策略 寬度優先遍歷策略的基本思路是,將新下載網頁中發現的鏈接直接插入待抓取URL隊列的末尾。也就是指網路爬蟲會先抓取起始網頁中鏈接的所有網頁,然後再選擇其中的一個鏈接網頁,繼續抓取在此網頁中鏈接的所有網頁。還是以上面的圖為例: 遍歷路徑:A-B-C-D-E-F G H I 3.反向鏈接數策略 反向鏈接數是指一個網頁被其他網頁鏈接指向的數量。反向鏈接數表示的是一個網頁的內容受到其他人的推薦的程度。因此,很多時候搜索引擎的抓取系統會使用這個指標來評價網頁的重要程度,從而決定不同網頁的抓取先後順序。 在真實的網路環境中,由於廣告鏈接、作弊鏈接的存在,反向鏈接數不能完全等他我那個也的重要程度。因此,搜索引擎往往考慮一些可靠的反向鏈接數。 4.Partial PageRank策略 Partial PageRank演算法借鑒了PageRank演算法的思想:對於已經下載的網頁,連同待抓取URL隊列中的URL,形成網頁集合,計算每個頁面的PageRank值,計算完之後,將待抓取URL隊列中的URL按照PageRank值的大小排列,並按照該順序抓取頁面。 如果每次抓取一個頁面,就重新計算PageRank值,一種折中方案是:每抓取K個頁面後,重新計算一次PageRank值。但是這種情況還會有一個問題:對於已經下載下來的頁面中分析出的鏈接,也就是我們之前提到的未知網頁那一部分,暫時是沒有PageRank值的。為了解決這個問題,會給這些頁面一個臨時的PageRank值:將這個網頁所有入鏈傳遞進來的PageRank值進行匯總,這樣就形成了該未知頁面的PageRank值,從而參與排序。下面舉例說明: 5.OPIC策略策略 該演算法實際上也是對頁面進行一個重要性打分。在演算法開始前,給所有頁面一個相同的初始現金(cash)。當下載了某個頁面P之後,將P的現金分攤給所有從P中分析出的鏈接,並且將P的現金清空。對於待抓取URL隊列中的所有頁面按照現金數進行排序。 6.大站優先策略 對於待抓取URL隊列中的所有網頁,根據所屬的網站進行分類。對於待下載頁面數多的網站,優先下載。這個策略也因此叫做大站優先策略。