在爬100萬數據的時候,我發現了爬蟲的進階之路

文章首發於慕課網,更多內容請訪問個人站點:https://www.donlex.cn

學習最好還是要以需求爲驅動才能夠快速成長。這是我最近一段時間的體會,其實也是我最近在寫爬蟲的思考。通過需求,讓你處於緊迫的狀態,不斷學習新的知識,去滿足這樣那樣的需求。這個時候,你會處於一種高度集中的狀態,你的學習能力也是最強的時候。

之前的爬蟲文章使用的都是一些基礎 Python 的知識,特別是在做一些小的項目的時候,運用好那些基礎知識就完全夠用了。所以如果沒有用到新的知識或沒有接觸到新的知識的時候,我就沒有寫出來,這就是這麼長時間沒有發文的原因。並且,我感覺我的爬蟲技術一直都處在初級階段,原地踏步,沒有一點進步,也就造成了“沒話可說”的尷尬地步。

起因

前幾周幫別人寫了一份爬蟲,邏輯不難,步驟也不繁瑣,只要簡單的幾步就可以,但是數據量是我目前接觸的最多的一次,將近 100萬 的數據量。

就算這條蟲子不慌,它爹心裏也慌呀!要是中途出現什麼情況,沒有做好斷點續爬的準備的話,那豈不是得從頭再來?

還有就是,這麼多的數據,在一臺機子上爬,效率明顯是很慢的,如果學會一點集羣和分佈式爬蟲,使用上,那每一臺機子的壓力就會小很多。

還有一點能夠提高效率的方法就是通過使用進程、線程。這些我也還不是很懂,因爲這次的項目需要 Selenium 才能通過驗證,所以我也就沒有使用,不然肯定也會學一下,不知道 Selenium 中有沒有多進程,線程這種東西?
在這裏插入圖片描述

再有就是 爬蟲的監控異常情況的通知 。爬蟲的監控我沒有接觸過,不過異常情況的通知,我倒是想着通過郵件提醒,雖然簡單,但是卻也能夠達到目的,所以我在做這個項目的時候,使用了一下,感覺還可以,後面可能會詳細的寫一寫。

說爬蟲怎麼能不說反爬呢?說一下我這次遇到的反爬機制。它的反爬主要是在你登陸的時候,就已經幹掉了大部分想要爬取它信息的人了。(因爲不能透露太多的信息,所以就用淘寶來舉個例子吧,個人感覺難度跟淘寶也是差不多的。)

爲什麼這麼說呢?你可以去試一下淘寶的登陸,看是有多麼的難。相信爬過淘寶的都知道,淘寶的ua參數,是經過了算法將一大堆因素組合起來的,想要破解,可能要琢磨到腦殼疼吧。。。

所以只能通過使用 Selenium 進行模擬登陸。但我可以很絕對地告訴你,淘寶能夠識別你使用了自動化工具,你的滑塊驗證碼無論怎麼刷新,永遠都是錯誤狀態,永遠不會成功。就像下圖一樣

在這裏插入圖片描述

我試着使用了網上一種聲稱能夠突破的辦法: 使用代理。果然,理想很美滿,現實很骨感。滑塊驗證碼是通過了,但是逃不過異地登陸短信驗證這一關。

如果想要體驗一下我當時的絕望感,可以自己嘗試着去搞一下淘寶的數據看下,看一下你能不能成功 “突破上分”

最後

當然,BB了這麼一大堆,還是要給一點乾貨的。那就給個我個人認爲 爬蟲進階的方向 吧!

  1. 過硬的反“反爬”能力
  2. 進程與線程
  3. 斷點續爬
  4. 分佈式
  5. 爬蟲監控
  6. 異常通知

這次爬蟲,我有一種打通了任督二脈的感覺,這種感覺就好像,那些打王者榮耀厲害的人說的 意識一樣 :什麼時候該反野,什麼時候該團一樣。不知道這樣講能不能體會到我醍醐灌頂的那種感覺?

還有一點體會,就是把事情往難了想和往量多了想,你就能找到當下自己所察覺不到的漏洞。當然,往難裏想也是需要一定的基礎的;但是往量多的方面想,這就沒有任何難度了,在腦海中模擬,總能挑出一點瑕疵了吧?

以前聽過下面這句話,沒有什麼深刻的體會;現在,算是真正的理解了。

再大的困難除以13億,都會變得很渺小!再小的力量乘以13億,就會變成愛的海洋。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章