1. 程式人生 > 程式設計 >淺析python 通⽤爬⾍和聚焦爬⾍

淺析python 通⽤爬⾍和聚焦爬⾍

一、爬蟲的簡單理解

1. 什麼是爬蟲?

網路爬蟲也叫網路蜘蛛,如果把網際網路比喻成一個蜘蛛網,那麼蜘蛛就是在網上爬來爬去的蜘蛛,爬蟲程式通過請求url地址,根據響應的內容進行解析採集資料, 比如:如果響應內容是html,分析dom結構,進行dom解析、或者正則匹配,如果響應內容是xml/json資料,就可以轉資料物件,然後對資料進行解析。

2. 爬蟲有什麼作用?

通過有效的爬蟲手段批量採集資料,可以降低人工成本,提高有效資料量,給予運營/銷售的資料支撐,加快產品發展。

3. 爬蟲業界的情況

目前網際網路產品競爭激烈,業界大部分都會使用爬蟲技術對競品產品的資料進行挖掘、採集、大資料分析,這是必備手段,並且很多公司都設立了爬蟲工程師的崗位。

4. 合法性

爬蟲是利用程式進行批量爬取網頁上的公開資訊,也就是前端顯示的資料資訊。因為資訊是完全公開的,所以是合法的。其實就像瀏覽器一樣,瀏覽器解析響應內容並渲染為頁面,而爬蟲解析響應內容採集想要的資料進行儲存。

5. 反爬蟲

爬蟲很難完全的制止,道高一尺魔高一丈,這是一場沒有硝煙的戰爭,碼農VS碼農

反爬蟲一些手段:

  • 合法檢測:請求校驗(useragent,referer,介面加簽名,等)
  • 小黑屋:IP/使用者限制請求頻率,或者直接攔截
  • 投毒:反爬蟲高境界可以不用攔截,攔截是一時的,投毒返回虛假資料,可以誤導競品決策

二、通用爬蟲

根據使⽤場景,⽹絡爬⾍可分為 通⽤爬⾍ 和 聚焦爬⾍ 兩種.。

1、通⽤爬⾍

通⽤⽹絡爬⾍是捜索引擎(Baidu、Google、Yahoo)抓取系統的重要組成部分。主要⽬的是將互聯⽹上的⽹⻚下載到本地,形成⼀個互聯⽹內容的映象備份。

⽹絡爬⾍的基本⼯作流程如下:

  1. ⾸先選取⼀部分精⼼挑選的種⼦URL;
  2. 將這些 URL 放⼊待抓取 URL 佇列;
  3. 從待抓取 URL 佇列中取出待抓取在 URL,解析 DNS,並且得到主機的 ip,並將 URL 對應的⽹⻚下載下來,儲存進已下載⽹⻚庫中。此外,將 這些 URL 放進已抓取 URL 佇列。
  4. 分析已抓取 URL 佇列中的 URL,分析其中的其他 URL,並且將 URL放⼊ 待抓取 URL 佇列,從⽽進⼊下⼀個迴圈....

淺析python 通⽤爬⾍和聚焦爬⾍

2、通⽤搜尋引擎(Search Engine)⼯作原理

隨著⽹絡的迅速發展,萬維⽹成為⼤量資訊的載體,如何有效地提取並利⽤這些資訊成為⼀個巨⼤的挑戰,通常⽤戶會通過搜尋引擎(Yahoo,Google,百度等),來作為訪問萬維⽹的⼊⼝。

⽽ 通⽤⽹絡爬⾍ 是搜尋引擎系統中⼗分重要的組成部分,它負責從互聯⽹中搜集⽹⻚,採集資訊,這些⽹⻚資訊⽤於為搜尋引擎建⽴索引從⽽提供⽀持,它決定著整個引擎系統的內容是否豐富,資訊是否即時,因此其效能的優劣直接影響著搜尋引擎的效果。

淺析python 通⽤爬⾍和聚焦爬⾍

第⼀步:抓取⽹⻚

搜尋引擎通過⼀種有特定規律的軟體,來跟蹤⽹⻚的連結,從⼀個連結爬到另外⼀個連結,像蜘蛛在蜘蛛⽹上爬⾏⼀樣,所以被稱為“蜘蛛”也被稱為“機器⼈”。

但是搜尋引擎蜘蛛的爬⾏是被輸⼊了⼀定的規則的,它需要遵從⼀些命令或⽂件的內容。
Robots 協議(也稱為爬⾍協議、機器⼈協議等)的全稱是“⽹絡爬⾍排除標準”(Robots Exclusion Protocol),⽹站通過 Robots 協議告訴搜尋引擎哪些⻚⾯可以抓取,哪些⻚⾯不能抓取

https://www.taobao.com/robots...
http://www.qq.com/robots.txt

robots.txt 只是約定,爬⾍遵守或者不遵守完全在於爬⾍作者的意願。舉個例⼦,公交⻋上貼著「請為⽼弱病殘孕讓座」,但是⼤部分⼈並不⻅得會遵守。⼀般來講,只有⼤的搜尋引擎爬⾍會遵守你⽹站的 robots.txt 協議,其它的爬⾍基本都不會看⼀眼你的 robots.txt 寫的是什麼。

第⼆步:資料儲存

搜尋引擎是通過蜘蛛跟蹤連結爬⾏到⽹⻚,並將爬⾏的資料存⼊原始⻚⾯資料庫。其中的⻚⾯資料與⽤戶瀏覽器得到的 HTML 是完全⼀樣的。搜尋引擎蜘蛛在抓取⻚⾯時,也做⼀定的重複內容檢測,⼀旦遇到權重很低的⽹站上有⼤量抄襲、採集或者複製的內容,很可能就不再爬⾏。

第三步:預處理

搜尋引擎將蜘蛛抓取回來的⻚⾯,進⾏各種步驟的預處理。

  • 提取⽂字
  • 中⽂分詞
  • 去停⽌
  • 消除噪⾳(搜尋引擎需要識別並消除這些噪聲,⽐如版權宣告⽂字、導 航條、⼴告等……)
  • 正向索引
  • 倒排索
  • 引連結關係計算
  • 特殊⽂件處理
  • ....

除了 HTML⽂件外,搜尋引擎通常還能抓取和索引以⽂字為基礎的多種⽂件型別,如 PDF、Word、WPS、XLS、PPT、TXT ⽂件等。我們在搜尋結果中也經常會看到這些⽂件型別。

但搜尋引擎還不能處理圖⽚、視訊、Flash 這類⾮⽂字內容,也不能執⾏指令碼和程式。

第四步:排名,提供檢索服務
搜尋引擎是根據⼀定的策略、運⽤特定的計算機程式從互聯⽹上搜集資訊,在對資訊進⾏組織和處理後,為⽤戶提供檢索服務,將⽤戶檢索相關的資訊展示給⽤戶的系統。

但是,這些通⽤性搜尋引擎也存在著⼀定的侷限性:

  1. 不同領域、不同背景的⽤戶往往具有不同的檢索⽬的和需求,通⽤搜尋引擎所返回的結果包含⼤量⽤戶不關⼼的⽹⻚。
  2. 通⽤搜尋引擎的⽬標是儘可能⼤的⽹絡覆蓋率,有限的搜尋引擎伺服器資源與⽆限的⽹絡資料資源之間的⽭盾將進⼀步加深。
  3. 萬維⽹資料形式的豐富和⽹絡技術的不斷髮展,圖⽚、資料庫、⾳頻、視訊多媒體等不同資料⼤量出現,通⽤搜尋引擎往往對這些資訊含量密集且具有⼀定結構的資料⽆能為⼒,不能很好地發現和獲取。
  4. 通⽤搜尋引擎⼤多提供基於關鍵字的檢索,難以⽀持根據語義資訊提出的查詢。

三、聚焦爬⾍(Focused Crawler)

  • 聚焦爬⾍,⼜稱主題爬⾍(或專業爬⾍),是“⾯向特定主題”的⼀種⽹絡爬⾍程式。它與我們通常所說的爬⾍(通⽤爬⾍)的區別之處就在於,聚焦爬⾍在實施⽹⻚抓取時要進⾏主題篩選。它儘量保證只抓取與主題相關的⽹⻚資訊。
  • 聚焦⽹絡爬⾍並不追求⼤的覆蓋,⽽將⽬標定為抓取與某⼀特定主題內容相關的⽹⻚,為⾯向主題的⽤戶查詢準備資料資源。
  • 聚焦爬⾍的⼯作流程較為複雜,需要根據⼀定的⽹⻚分析演算法過濾與主題⽆關的連結,保留有⽤的連結並將其放⼊等待抓取的 URL 佇列。然後,它將根據⼀定的搜尋策略從佇列中選擇下⼀步要抓取的⽹⻚URL,並重覆上述過程,直到達到系統的某⼀條件時停⽌。
  • 另外,所有被爬⾍抓取的⽹⻚將會被系統存貯,進⾏⼀定的分析、過濾,並建⽴索引,以便之後的查詢和檢索;對於聚焦爬⾍來說,這⼀過程所得到的分析結果還可能對以後的抓取過程給出反饋和指導。

以上就是淺析python 通⽤爬⾍和聚焦爬⾍的詳細內容,更多關於python 爬蟲的資料請關注我們其它相關文章!