欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

Python構建網頁爬蟲原理分析

系統 1622 0

既然本篇文章說到的是Python構建網頁爬蟲原理分析,那么小編先給大家看一下Python中關于爬蟲的精選文章:

python實現簡單爬蟲功能的示例

python爬蟲實戰之最簡單的網頁爬蟲教程

網絡爬蟲是當今最常用的系統之一。最流行的例子是 Google 使用爬蟲從所有網站收集信息。除了搜索引擎之外,新聞網站還需要爬蟲來聚合數據源。看來,只要你想聚合大量的信息,你可以考慮使用爬蟲。

建立一個網絡爬蟲有很多因素,特別是當你想擴展系統時。這就是為什么這已經成為最流行的系統設計面試問題之一。在這篇文章中,我們將討論從基本爬蟲到大型爬蟲的主題,并討論在面試中可能會遇到的各種問題。

1 - 基本解決方案

如何建立一個基本的網絡爬蟲?

在系統設計面試之前,我們已經在《系統設計面試之前需要知道的八件事》中談到,就是從簡單的東西開始。讓我們專注于構建在單線程上運行的基本網頁爬蟲。有了這個簡單的解決方案,我們可以繼續優化。

要抓取單個網頁,我們只需要向相應的 URL 發出 HTTP GET 請求,并解析響應數據,這是抓取工具的核心。考慮到這一點,一個基本的網絡爬蟲可以這樣工作:

以包含我們要抓取的所有網站的網址池開始。

對于每個 URL,發出 HTTP GET 請求來獲取網頁內容。

解析內容(通常為 HTML)并提取我們想要抓取的潛在網址。

添加新的網址到池中,并不斷抓取。

這取決于具體問題,有時我們可能會有一個獨立的系統來生成抓取網址。例如,一個程序可以不斷監聽 RSS 訂閱,并且對于每個新文章,都可以將該 URL 添加到爬取池中。

2 - 規模問題

眾所周知,任何系統在擴展后都會面臨一系列問題。在網絡爬蟲中,將系統擴展到多臺機器時,有很多東西可能出錯。

在跳轉到下一節之前,請花幾分鐘的時間思考一下分布式網絡爬蟲的瓶頸,以及如何解決這個問題。在這篇文章的其余部分,我們將討論解決方案的幾個主要問題。

3 - 抓取頻率

你多久爬一次網站?

這聽起來可能不是什么大事,除非系統達到一定的規模,而且你需要非常新鮮的內容。例如,如果你想要獲取上一小時的最新消息,則抓取工具可能需要每隔一小時不斷抓取新聞網站。但是這有什么問題呢?

對于一些小型網站,他們的服務器很可能無法處理這種頻繁的請求。一種方法是遵循每個站點的robot.txt。對于不知道robot.txt是什么的人,這基本是網站與網絡爬蟲交流的標準。它可以指定不應該抓取什么文件,大多數網絡爬蟲都遵循配置。另外,你可以為不同的網站設置不同的抓取頻率。通常,每天只有幾個網站需要被多次抓取。

4 - 去重

在一臺機器上,你可以將 URL 池保留在內存中,并刪除重復的條目。但是,分布式系統中的事情變得更加復雜。基本上,多個爬蟲可以從不同的網頁中提取相同的 URL,他們都希望將這個 URL 添加到 URL 池中。當然,多次抓取同一頁面是沒有意義的。那么我們如何去重復這些網址?

一種常用的方法是使用 Bloom Filter。簡而言之,布隆過濾器是一個節省空間的系統,它允許你測試一個元素是否在一個集合中。但是,它可能有誤報。換句話說,如果布隆過濾器可以告訴你一個 URL 絕對不在池中,或者可能在池中。

為了簡要地解釋布隆過濾器是如何工作的,空布隆過濾器是m位(全0)的位數組。還有k個散列函數,將每個元素映射到m位中的一個。所以當我們在布隆過濾器中添加一個新的元素(URL)時,我們將從哈希函數中得到k位,并將它們全部設置為1.因此,當我們檢查一個元素的存在時,我們首先得到k位,如果它們中的任何一個不是1,我們立即知道該元素不存在。但是,如果所有的k位都是1,這可能來自其他幾個元素的組合。

布隆過濾器是一個非常常用的技術,它是一個完美的解決方案,用于在網絡爬蟲中去重網址。

5 - 解析

從網站獲取響應數據后,下一步是解析數據(通常是 HTML)來提取我們所關心的信息。這聽起來像一個簡單的事情,但是,可能很難使其健壯。

我們面臨的挑戰是,你總是會在 HTML 代碼中發現奇怪的標記,URL 等,很難涵蓋所有的邊界情況。例如,當 HTML 包含非 Unicode 字符時,你可能需要處理編解碼問題。另外,當網頁包含圖片,視頻甚至PDF 時,也會造成奇怪的行為。

另外,一些網頁都像使用 AngularJS 一樣通過 Javascript 呈現,你的抓取工具可能無法得到任何內容。

我會說沒有銀彈,不能為所有的網頁做一個完美的,健壯的爬蟲。你需要大量的健壯性測試,以確保它能夠按預期工作。

總結

還有很多我還沒有涉及到的有趣的話題,但是我想提一下其中的一些,這樣你就可以思考了。有一件事是檢測循環。許多網站包含鏈接,如A->B->C->A,你的爬蟲可能會永遠運行。想想如何解決這個問題?

另一個問題是 DNS 查找。當系統擴展到一定的水平時,DNS 查找可能是一個瓶頸,你可能要建立自己的 DNS 服務器。

與許多其他系統類似,擴展的網絡爬蟲可能比構建單個機器版本困難得多,并且在系統設計面試中可以討論許多事情。嘗試從一些樸素的解決方案開始,并繼續優化它,這可以使事情變得比看起來更容易。

以上就是我們總結的關于網頁爬蟲的相關文章內容,大家如果還有其他想知道的可以在下方的留言區域討論,感謝大家對腳本之家的支持。


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 最新国产视频 | 色鬼久久 | 黄色资源在线 | 成人久草 | 久草看片| 色欲AV久久一区二区三区 | 亚洲国产中文字幕在线观看 | 久9久9精品视频在线观看 | 香蕉久草在线 | 第一次破處在线国语视频播放 | 亚州精品天堂中文字幕 | 2022国内精品免费福利视频 | 欧美综合自拍亚洲综合百度 | 色妞色视频一区二区三区四区 | 免费高清伧理片午夜伧理片 | 亚洲日本乱码在线观看 | 米奇777四色精品人人爽 | 一本一本大道香蕉久在线精品 | 中文字幕免费 | 国产香蕉视频在线 | 久久美女性网 | 国产浮力影院在线地址 | 天堂综合网久久 | 亚洲欧美中文日韩在线v日本 | 日本a v网站| 亚洲情av| 性强烈欧美一级毛片 | 一道本不卡视频 | 91在线网 | 毛片a片| 成人a视频在线观看 | 精品伊人久久大线蕉地址 | 国产 日韩 欧美 亚洲 | 亚洲成人小视频 | 国产午夜亚洲精品一区 | 美女久久久久久久久久久 | 我要看欧美一级毛片 | 国产精品人妻无码久久久郑州 | 成人精品网站在线观看 | 成人亚洲综合 | 人人舔人人舔 |