首頁>技術>

爬蟲技術門檻不高,想要從頭自學爬蟲,“工欲善其事,必先利其器”,Python功能強大,語法簡潔易上手,是網路爬蟲的有力工具,建議用Python語言入手。

韋世東,資深爬蟲工程師,《Python 3 反爬蟲原理與繞過實戰》的作者,他就是從網際網路運營崗位的小白自學Python,轉行成為資深爬蟲工程師。

爬蟲路要怎麼走?他說提前規劃十分有必要。結合自身從小白開始學爬蟲的經歷,他給初學者提出了 5 個建議。希望對題主有所幫助。

這份爬蟲的武林祕籍您收好!

1. 從入門到大師,中間還有多少坑

入門爬蟲並不難,但是爬蟲作為一門綜合技術,需要爬蟲工程師具備很強的綜合能力。

不僅要對資料抽取、網路請求有所了解,前端、後端、APP、甚至是 PC 端的應用程式都要了解。在這個過程中,你需要邁過 3 個難點。

JavaScript 就是其中之一。它會給實際操作帶來一定困難,比如,程式碼混淆、引數加密,還有一些響應事件,你必須用滑鼠點選才能完成的操作,這要求你一定要了解 JavaScript。

APP 是另一個難點。除了程式碼混淆、引數加密之外,APP 還會在外面加個殼然後加固,就算你逆向,也很難看到它的程式碼。

深度學習是第三個難點。深度學習是目前各大行業都在融入的技術領域。用深度學習進行驗證碼識別、字型反爬等。

我發現很多朋友其實對於驗證碼識別、JavaScript 混淆、WebSocket 和字型反爬蟲有一種莫名的恐懼感,覺得這些是很難解決的問題。

實際上,只要我們了解其工作原理,就能夠找到突破口。爬蟲與反爬蟲都是綜合知識的應用,單純了解某個反爬蟲的實現方法或繞過技巧是不夠的,我們應該深入了解其實現原理,這樣才能夠在爬蟲工程師的職業道路上走得更遠。

2. 三分鐘熱度,我該如何堅持下去

堅持是一件很難的事。從初級爬蟲工程師成長為高階爬蟲工程師,中間必然要經過很多困難。切記三分鐘熱度,要學會給自己設定階段性的小目標。

第一階段:儲備好基礎知識,先找到一份爬蟲相關的工作,著手鍛鍊。這個階段,你可以在社群裡試著幫助其他小夥伴解決問題,收穫肯定和成就感,給自己一個前進的動力。

第二階段:隨著業務量的不斷增加,你需要儲備更多的知識,開始接觸到爬蟲的更深層次。

第三階段:任何爬蟲工程師都會接觸到反爬蟲,你在爬取別人家資料的同時,也要防止自己的資料被爬取。

第四階段:要追求資料的精細化和精準化。

在學習的過程中,你肯定會遇到操作上的各種問題。這時候要勤翻文件、多讀原始碼,也可以把自己解決問題的過程寫成技術文章,轉變角度去看問題,問題似乎迎刃而解。

讓知識從吸收再到轉化,從不懂到了解再到掌握。另外,通過自己的技術輸出,還能讓爬蟲產生價值,轉化為收入。

你可以將自己的技術歷程寫成一本書,或者一個部落格,或者製作成一節直播課,這些不僅可以幫助其他入門的開發者,也是推動你繼續學習的動力。

3. 為何我感覺越來越困難

無論是在學習的過程中還是工作中,我總會遇到千奇百怪的需求和反爬蟲。

作為一名爬蟲工程師,你註定會遇到奇葩的需求和反爬蟲。這就像後端研發要面對產品經理和併發挑戰一樣,更像學武之人要經常與不同的對手切磋武藝一樣。

遇到這些,只會使你變得更強!

雖然不停地學習,也略有進步,但總感覺遇到的挑戰越來越困難。

如果你遇到了上面這些問題,說明你正處於技術瓶頸期。瓶頸期來的越早,說明你進步越快。

如何突破瓶頸期呢?

堅持和學習是讓你能夠撐到突破瓶頸的最好辦法,雖然你會感覺很難熬。解決技術問題的最好方式不是看書就是做實驗,如果你遇到的問題能夠通過學習解決,那趕緊買本書或者買一份教程;如果你遇到的問題不能通過學習解決,那就多做一些實驗。

必殺技:有時候幾天想不出來的問題,出去逛一逛,回來就會有新的思路了。

工作很忙,每天大部分時間都是寫路徑查詢語法(Xpath、CSS 選擇器),學習和研究的時間很少,似乎很難再有進步。

對於路徑查詢語法,想必你早已了然於胸。你可以嘗試跟公司領導進行交流,看看是否能減少些路徑查詢語法的工作量(這型別工作通常交給新入職的工程師或者實習生,一方面能夠讓其快速熟悉業務,另一方面能夠減少技術主力的重複工作量),將更多的時間放在技術難點的研究上。

4. 爬蟲工程師的職業路徑

如果你是一個爬蟲工程師,那你大概率是一個 Python 開發者。從入門 Python 到成為一個爬蟲工程師,大致路線是這樣:Python 開發者——爬蟲入門——初級爬蟲工程師......

爬蟲職位,一線城市居多。在資料驅動型的公司裡,爬蟲工程師會比較受重視。從初級爬蟲工程師到高階爬蟲工程師,因為承擔責任的不同,薪水在 10k 到 30k 之間浮動。

爬蟲工程師每天都要面對不斷變化的網頁,充滿了新鮮感與挑戰。有時候你覺得這份工作還不錯,但是有時候又覺得工作不是特別好,所以要不要轉行,一直是你糾結的問題。

與其糾結,不如選擇紮根目前的領域,垂直下來,切忌搖擺不定。畢竟中途轉行,一切又要從頭開始,薪水對摺,還要重新學習其他領域的新知識。這中間的得失,要慎重考慮。

5. 爬蟲究竟合不合法

2010 年,軟體工程師 Pete Warden 因構建了一個網路爬蟲從 Facebook 上收集資料,而收到 Facebook 的一封勒令停止通知函。他立刻停止了自己的行動。有人問他為什麼要依從 Facebook 的要求,他說:“大資料雖然很便宜,但律師費可不便宜。”

所以君子之間,要遵守 robots 協議。

大資料時代,很多公司通過使用網路爬蟲來採集公開資訊。雖然目前還沒有一條完全針對爬蟲的法律條款,但爬蟲工程師們心裡還是要有一條線,千萬不要踩過界。不然稍有不慎就可能從入門到入獄。

在做爬蟲工作時,應注意控制爬蟲的訪問頻率,當爬蟲程式所產生的流量超過網站流量的 1/3,如果出現任何問題,你是要負責的。

還要注意資料的最終流向,是否被用作違法用途。如果你違法破解了別人的產品,還將具體方法公開,這也是不被允許的。

另外,不是所有的資料都能被分享的,在熟練業務的同時也要注意這些法律問題,免得給自己或者公司帶來麻煩。

如果你是一名爬蟲工程師,那以上的問題你在工作中都可能會遇到。快速上手爬蟲雖然不是難事,但貴在堅持,多讀原始碼,多看文件。希望每一個正在入門和學習爬蟲的你,都能靜下心來,認真學習,實現突破。

王國維在《人間詞話》中說:

古今之成大事業、大學問者,必經過三種之境界: “昨夜西風凋碧樹,獨上高樓,望盡天涯路。” 此第一境也。 “ 衣帶漸寬終不悔,為伊消得人憔悴。” 此第二境也。“眾裡尋他千百度,驀然回首,那人卻在,燈火闌珊處。”此第三境也。

也就是說,經過第一階段的登高望遠,總結和學習前人經驗,和第二階段為實現目標專注、堅持不懈地學習,方能實現第三階段的豁然開朗,有所建樹。與君共勉!

本文轉自圖靈教育,作者韋世東,有改動。

相關閱讀:

《Python 3反爬蟲原理與繞過實戰》

韋世東 著

本書適合有工作實踐的爬蟲工程師和前、後端開發者。

本書分為紅和藍,進攻和防守兩端,爬蟲工程師就是紅色方,進攻方,前後端開發者要保護他們的資料,增加爬蟲程式對資料獲取的難度,就是藍色防守方,從“攻”與“防”兩個角度描述了爬蟲技術與反爬蟲技術的對抗過程,並詳細介紹了這其中的原理和具體實現方法。

通過這本書,你將了解到簽名驗證、文字混淆、動態渲染、加密解密、程式碼混淆和行為驗證碼等反爬蟲技術的成因和繞過方法。掌握這些知識後,你的理論基礎將非常紮實,能夠輕鬆應對一線大廠中高階爬蟲工程師面試的理論和思路問題。

實戰方面,除了本書搭建的 21 個線上練習示例之外,還結合工作中遇到的綜合反爬蟲進行演練,從而穩步提升個人技術實力。

韋世東老師圖靈直播回看:

1.爬蟲工程師‘養成’指南,如何規劃職業成長路徑

https://www.bilibili.com/video/av83667121?

2.手把手教你Python原始碼的閱讀和除錯

https://www.bilibili.com/video/av91303459?

《Python3網路爬蟲開發實戰》

崔慶才 著

本書首先介紹了環境配置和基礎知識,然後討論了urllib、requests、正則表示式、Beautiful Soup、XPath、pyquery、資料儲存、Ajax資料爬取等內容,接著通過多個案例介紹了不同場景下如何實現資料爬取,最後介紹了pyspider框架、Scrapy框架和分散式爬蟲。

內容豐富,基本上涵蓋了從入門到初級爬蟲工程師,甚至到中級爬蟲工程師階段需要用到的知識。

  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 無所不能的大前端