1. 程式人生 > >爬蟲很簡單麽?直到我抓取了一千億個網頁後我懂!爬蟲真不簡單!

爬蟲很簡單麽?直到我抓取了一千億個網頁後我懂!爬蟲真不簡單!

服務 字體 每日 還需要 道理 但是 電子商務 發表 硬件

技術分享圖片

技術分享圖片

現在爬蟲技術似乎是很容易的事情,但這種看法是很有迷惑性的。開源的庫/框架、可視化的爬蟲工具以及數據析取工具有很多,從網站抓取數據似乎易如反掌。然而,當你成規模地在網站上抓東西時,事情很快就會變得非常棘手。

私信小編007即可獲取數十套PDF哦!

技術分享圖片

規模爬取技術為什麽重要?

跟標準的web爬取應用不一樣的是,規模爬取電子商務產品數據有一項獨特挑戰使得web抓取要困難許多。

本質上這些挑戰可歸結為兩件事情: 速度 和 數據質量 。

技術分享圖片

技術分享圖片

挑戰#1——草率而且總是在變的網站格式

這一點很明顯但也許不是最性感的挑戰,但是草率而一直在變的網站格式是目前為止你在規模析取數據時將會面臨的最大挑戰。這未必是因為任務的復雜性,而是由於你要投入的時間和資源。

技術分享圖片

沒有容易的解決方案

不幸的是,不存在銀彈可以徹底解決這些問題。很多時候這只是隨著規模而擴大投入更多資源到你的項目上才能解決的事情。再拿上一個例子來說吧,那個項目有18名全職的爬蟲工程師以及3名專職的QA工程師來確保客戶總能得到可靠的數據流。

技術分享圖片

挑戰 2:可伸縮的架構

你將面臨的第二個挑戰是建設一個可隨每日請求數增長而擴充且性能不會下降的爬蟲基礎設施。

在規模析取產品數據時,一個串行爬取的簡單web爬蟲是不堪此任的。通常一個串行的web爬蟲會循環發出請求,每一項請求都要2到3秒鐘完成。

技術分享圖片

挑戰 3:維護吞吐量性能

一級方程式的目標是將車上一切不必要的載荷都剔除掉,並且以速度之名將引擎最後一絲馬力都榨幹,從這個意義上來說規模抓取可以跟一級方程式相比較。規模web抓取也是一樣的道理。

在析取大量數據時,在現有硬件資源條件下,你總是會想方設法要尋找請求周期最小化爬蟲性能最大化的手段。這一切都是希望你能給每個請求節省下來那麽幾微秒的時間。

為此你的團隊需要對web爬取框架、代理管理以及所使用的硬件具備深刻理解,這樣才能對它們進行調整以優化性能。你還需要關註:

技術分享圖片

代理以外

不幸的是,光靠使用代理服務並不足以確保你能規避大型電子商務網站的反機器人對策。越來越多的網站正在利用復雜的反機器人對策來監控你的爬蟲行為,檢測其是否真人訪客。

這些範機器人對策不僅使得爬取電子商務網站越來越困難,而且克服這些手段如果做得不對的話也會嚴重拖累爬蟲性能。

這些機器人對策有很大一部分使用到了JavaScript來確定請求是否來自於爬蟲還是人(Javascript引擎檢查、字體枚舉、WebGL與Canvas等)。

技術分享圖片

  • 網站變化——目標網站發生的結構性改變是爬蟲失效的主要原因。我們的專用監控系統會監控到這一點。該工具會對目標網站進行頻繁的檢查,確保自從上次抓取之後沒有發生任何變化。如果改變被發現,它也會發出通知。

我們會在稍後的文章中專門討論自動質量保證的細節。

總結

正如你所看到那樣,規模抓取產品數據會面臨一系列的獨特挑戰。希望這篇文章能夠讓你更加意識到相關挑戰,並且就如何解決這些問題獲得啟發。

然而,這只是本系列文章的第一部分,所以如果你感興趣的話可以註冊我們的電子郵件列表,一旦下一篇文章發表了我們會第一時間通知你。

進群:125240963 即可獲取數十套PDF哦!

爬蟲很簡單麽?直到我抓取了一千億個網頁後我懂!爬蟲真不簡單!