版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
Python爬蟲設(shè)計入門
重慶大學(xué)軟件效勞工程實驗室余俊良UsingPythonToDesignACrawlerSummarize根本的爬蟲工作原理簡單爬蟲設(shè)計入門庫:下載網(wǎng)頁:urllib,Requests解析網(wǎng)頁:BeautifulSoup模擬交互,處理JS動態(tài)網(wǎng)頁:Selenium高級爬蟲框架Scrapy分布式爬蟲設(shè)計分布式隊列布隆過濾器(BloomFilter)網(wǎng)絡(luò)爬蟲是一個自動提取網(wǎng)頁的程序,它為搜索引擎從萬維網(wǎng)上下載網(wǎng)頁,是搜索引擎的重要組成。傳統(tǒng)爬蟲從一個或假設(shè)干初始網(wǎng)頁的URL開始,獲得初始網(wǎng)頁上的URL,在抓取網(wǎng)頁的過程中,不斷從當(dāng)前頁面上抽取新的URL放入隊列,直到滿足系統(tǒng)的一定停止條件。什么是爬蟲批量型爬蟲批量型爬蟲有明確的抓取范圍和目標(biāo),當(dāng)爬蟲到達這個設(shè)定的目標(biāo)后,即停止抓取過程。增量型爬蟲增量型爬蟲會持續(xù)不斷的抓取,對于抓取的網(wǎng)頁,要定期更新。通用的商業(yè)搜索引擎爬蟲根本都屬于此類。垂直型爬蟲垂直型爬蟲關(guān)注特定主題內(nèi)容或者屬于特定行業(yè)的網(wǎng)頁,其他主題或者其他行業(yè)的內(nèi)容不再考慮范圍。爬蟲的分類通用爬蟲框架根本工作流程網(wǎng)絡(luò)爬蟲的根本工作流程如下:1.首先選取一局部精心挑選的種子URL;2.將這些URL放入待抓取URL隊列;3.從待抓取URL隊列中取出待抓取在URL,解析DNS,并且得到主機的ip,并將URL對應(yīng)的網(wǎng)頁下載下來,存儲進已下載網(wǎng)頁庫中。此外,將這些URL放進已抓取URL隊列。4.分析已抓取URL隊列中的URL,分析其中的其他URL,并且將URL放入待抓取URL隊列,從而進入下一個循環(huán)。從爬蟲的角度對互聯(lián)網(wǎng)進行劃分從爬蟲的角度對互聯(lián)網(wǎng)進行劃分對應(yīng)的,可以將互聯(lián)網(wǎng)的所有頁面分為五個局部:1.已下載未過期網(wǎng)頁2.已下載已過期網(wǎng)頁:抓取到的網(wǎng)頁實際上是互聯(lián)網(wǎng)內(nèi)容的一個鏡像與備份,互聯(lián)網(wǎng)是動態(tài)變化的,一局部互聯(lián)網(wǎng)上的內(nèi)容已經(jīng)發(fā)生了變化,這時,這局部抓取到的網(wǎng)頁就已經(jīng)過期了。3.待下載網(wǎng)頁:也就是待抓取URL隊列中的那些頁面4.可知網(wǎng)頁:還沒有抓取下來,也沒有在待抓取URL隊列中,但是可以通過對已抓取頁面或者待抓取URL對應(yīng)頁面進行分析獲取到的URL,認(rèn)為是可知網(wǎng)頁。5.還有一局部網(wǎng)頁,爬蟲是無法直接抓取下載的。稱為不可知網(wǎng)頁。抓取策略在爬蟲系統(tǒng)中,待抓取URL隊列是很重要的一局部。待抓取URL隊列中的URL以什么樣的順序排列也是一個很重要的問題,因為這涉及到先抓取那個頁面,后抓取哪個頁面。而決定這些URL排列順序的方法,叫做抓取策略。下面重點介紹幾種常見的抓取策略:
1.深度優(yōu)先遍歷策略
2.寬度優(yōu)先遍歷策略
3.反向鏈接數(shù)策略4.PartialPageRank策略抓取策略depth-first:遍歷的路徑:A-F-G
E-H-IBCDbreadth-first:遍歷的路徑:A-B-C-D-E-FGHI網(wǎng)頁更新策略
互聯(lián)網(wǎng)是實時變化的,具有很強的動態(tài)性。網(wǎng)頁更新策略主要是決定何時更新之前已經(jīng)下載過的頁面。常見的更新策略又以下三種:1.歷史參考策略
顧名思義,根據(jù)頁面以往的歷史更新數(shù)據(jù),預(yù)測該頁面未來何時會發(fā)生變化。一般來說,是通過泊松過程進行建模進行預(yù)測。網(wǎng)頁更新策略
2.用戶體驗策略
盡管搜索引擎針對于某個查詢條件能夠返回數(shù)量巨大的結(jié)果,但是用戶往往只關(guān)注前幾頁結(jié)果。因此,抓取系統(tǒng)可以優(yōu)先更新那些顯示在查詢結(jié)果前幾頁中的網(wǎng)頁,而后再更新那些后面的網(wǎng)頁。這種更新策略也是需要用到歷史信息的。用戶體驗策略保存網(wǎng)頁的多個歷史版本,并且根據(jù)過去每次內(nèi)容變化對搜索質(zhì)量的影響,得出一個平均值,用這個值作為決定何時重新抓取的依據(jù)網(wǎng)頁更新策略
3.聚類抽樣策略前面提到的兩種更新策略都有一個前提:需要網(wǎng)頁的歷史信息。這樣就存在兩個問題:第一,系統(tǒng)要是為每個系統(tǒng)保存多個版本的歷史信息,無疑增加了很多的系統(tǒng)負(fù)擔(dān);第二,要是新的網(wǎng)頁完全沒有歷史信息,就無法確定更新策略。這種策略認(rèn)為,網(wǎng)頁具有很多屬性,類似屬性的網(wǎng)頁,可以認(rèn)為其更新頻率也是類似的。要計算某一個類別網(wǎng)頁的更新頻率,只需要對這一類網(wǎng)頁抽樣,以他們的更新周期作為整個類別的更新周期。分布式抓取系統(tǒng)結(jié)構(gòu)
一般來說,抓取系統(tǒng)需要面對的是整個互聯(lián)網(wǎng)上數(shù)以億計的網(wǎng)頁。單個抓取程序不可能完成這樣的任務(wù)。往往需要多個抓取程序一起來處理。一般來說抓取系統(tǒng)往往是一個分布式的三層結(jié)構(gòu)。如下圖:分布式抓取系統(tǒng)結(jié)構(gòu)
最下一層是分布在不同地理位置的數(shù)據(jù)中心,在每個數(shù)據(jù)中心里有假設(shè)干臺抓取效勞器,而每臺抓取效勞器上可能部署了假設(shè)干套爬蟲程序。這就構(gòu)成了一個根本的分布式抓取系統(tǒng)。對于一個數(shù)據(jù)中心內(nèi)的不同抓去效勞器,協(xié)同工作的方式有幾種:1.主從式〔Master-Slave〕
2.對等式〔PeertoPeer〕主從式抓取系統(tǒng)結(jié)構(gòu)主從式抓取系統(tǒng)結(jié)構(gòu)對于主從式而言,有一臺專門的Master效勞器來維護待抓取URL隊列,它負(fù)責(zé)每次將URL分發(fā)到不同的Slave效勞器,而Slave效勞器那么負(fù)責(zé)實際的網(wǎng)頁下載工作。Master效勞器除了維護待抓取URL隊列以及分發(fā)URL之外,還要負(fù)責(zé)調(diào)解各個Slave效勞器的負(fù)載情況。以免某些Slave效勞器過于清閑或者勞累。這種模式下,Master往往容易成為系統(tǒng)瓶頸。對等式抓取系統(tǒng)結(jié)構(gòu)對等式抓取系統(tǒng)結(jié)構(gòu)
在這種模式下,所有的抓取效勞器在分工上沒有不同。每一臺抓取效勞器都可以從待抓取在URL隊列中獲取URL,然后對該URL的主域名的hash值H,然后計算Hmodm〔其中m是效勞器的數(shù)量,以上圖為例,m為3〕,計算得到的數(shù)就是處理該URL的主機編號。這種模式有一個問題,當(dāng)有一臺效勞器死機或者添加新的效勞器,那么所有URL的哈希求余的結(jié)果就都要變化。也就是說,這種方式的擴展性不佳。對等式抓取系統(tǒng)結(jié)構(gòu)
在這種模式下,所有的抓取效勞器在分工上沒有不同。每一臺抓取效勞器都可以從待抓取在URL隊列中獲取URL,然后對該URL的主域名的hash值H,然后計算Hmodm〔其中m是效勞器的數(shù)量,以上圖為例,m為3〕,計算得到的數(shù)就是處理該URL的主機編號。這種模式有一個問題,當(dāng)有一臺效勞器死機或者添加新的效勞器,那么所有URL的哈希求余的結(jié)果就都要變化。也就是說,這種方式的擴展性不佳。布隆過濾器在構(gòu)建分布式爬蟲時抓取海量網(wǎng)頁時,通常需要維護一個很長的已抓取URL集合,防止重復(fù)抓取已經(jīng)下載過的網(wǎng)頁。然而即使使用哈希表來構(gòu)建這個集合,依然面臨著沖突和內(nèi)存利用率不高的缺點。通常的判重做法是使用BloomFilter〔布隆過濾器〕來進行已抓取網(wǎng)頁查找。布隆過濾器布隆過濾器〔BloomFilter〕是由布隆〔BurtonHowardBloom〕在1970年提出的。它實際上是由一個很長的二進制向量和一系列無關(guān)的哈希函數(shù)組成,布隆過濾器可以用于檢索一個元素是否在一個集合中。它的優(yōu)點是空間效率和查詢時間都遠遠超過一般的算法,缺點是有一定的誤識別率和刪除困難。即BloomFilter報告某一元素存在于某集合中,但是實際上該元素并不在集合中,但是沒有識別錯誤的情形,如果某個元素在該集合中,那么BloomFilter是不會報告該元素不在集合中的,所以不會漏報。布隆過濾器相比于其它的數(shù)據(jù)結(jié)構(gòu),布隆過濾器在空間和時間方面都有巨大的優(yōu)勢。布隆過濾器存儲空間和插入/查詢時間都是常數(shù)。另外,Hash函數(shù)相互之間沒有關(guān)系,方便由硬件并行實現(xiàn)。布隆過濾器不需要存儲元素本身,在某些對保密要求非常嚴(yán)格的場合有優(yōu)勢。Python高級爬蟲框架ScrapyScrapy,Python開發(fā)的一個快速,高層次的屏幕
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 學(xué)生會演講稿(匯編15篇)
- 2025預(yù)拌混凝土供應(yīng)合同協(xié)議(范本)
- 2024年版軟件使用許可標(biāo)準(zhǔn)合同
- 2025建筑工程分包合同范本塔吊租賃
- 2024年中國硬質(zhì)合金焊接刀頭市場調(diào)查研究報告
- 2024年留學(xué)獎學(xué)金授予合同3篇
- 2024年空調(diào)設(shè)備供應(yīng)及安裝協(xié)議范例版B版
- 2025合同樣例OEM委托加工合同 范本
- 2024年中國苗木護根劑市場調(diào)查研究報告
- 2024年中國精油蒸汽美膚機市場調(diào)查研究報告
- 中考二次函數(shù)應(yīng)用題(含答案)
- 畫說學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 基于“三新”背景下的2025屆新高考物理復(fù)習(xí)備考策略-課件
- 2024年河南省鄭州市高考物理一模試卷(含解析)
- 劍指CET-4:大學(xué)生英語能力基礎(chǔ)學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 瓷磚訂購合同協(xié)議書模板
- 保安項目人員替換方案
- 2024學(xué)年八年級英語上冊 Module 6 Animals in danger Unit 1 It allows people to get closer to them教案 (新版)外研版
- 2024年新人教版部編八年級道德與法治教材解讀
- 《新視野商務(wù)英語視聽說》第四版-上-U2 Jobs and Responsibilities
- 第9課《古詩三首》(同步練) 2024-2025學(xué)年四年級語文上冊(統(tǒng)編版)
評論
0/150
提交評論