如何入行Python爬蟲工程師

麻瓜程式設計發表於2019-02-28

現狀和想要達到的目標之間,總是有一條大河。大部分人花費了巨大的精力在水流裡掙扎,還沒能接近目標,就已經被湍急的水流沖走了。然而,總有少部分人能乘著小船,直達對岸

10年前,從普通學校畢業的我進入了一家小公司,傳統運維的工作重複性太高,特別枯燥。

於是我下定決心決定擺脫這種困境,想通過程式設計來改變現狀。於是開始學習 Python,當時也非常苦逼,每天早上5點起來看視訊看書做練習。

3個月之後,我跳槽了,薪酬是之前的兩倍

後來,我得到了進入搜狐這樣公司的機會,一路成長為社交產品的服務端負責人,也進入了一線網際網路公司的技術圈子,有了更高的視野。

學一門新的技術,從而獲得新的機遇。與其說是一種能力,不如說是一種方法。

在這裡,把我的實踐過的經驗和心得分享給大家。

 

轉行路上的3個坑 

坑1:無盡的刷初級教程 

爬蟲是入門簡單,深入難

現在在知乎、微信公號上的大部分爬蟲教程都是初級教程,大家寫著玩的,真正公司裡用的東西不會發出來。

無盡的刷這種初級教程,剛開始會有成就感,後來就是無限的重複,會讓你的水平一直停留於入門級,無法提高。

 

坑2:程式碼一失效就哭天喊地 

你在書裡、視訊裡、教程裡看到的爬蟲程式碼是很容易失效的

要爬取的網站每週都會更新迭代。而且許多大公司都有自己的反爬蟲團隊,一旦發現用的多的爬蟲策略,就會禁止你的訪問。

如果你缺乏自己去攻防反爬的能力,就只能在程式碼失效時措手無策、哭天喊地,卻找不到辦法自己去解決。

 

坑3:不瞭解 Python 多程式併發程式 

如果沒寫過爬蟲的話,很可能是沒寫過 Python 多程式併發程式的。我接觸的程式設計師,其中好多人歲數都已經很大了,都沒有寫過一個併發的程式,而是一直在寫業務邏輯。

而為了提升爬蟲效率,關鍵點就在於要了解:併發、並行、什麼時候用多執行緒?什麼時候用多程式?什麼時候用協程?尤其像 Python 是動態語言,它有 GIL 的情況下,怎麼去做處理?什麼時候是 IO 密集型的,什麼時候是 CPU 密集型的,想提升效率怎麼去處理?

如果不是科班出身的話,理解起來會有很多的誤區。在處理如何更快速更高效的爬取網站的時候,就會遇到問題。

 

如何轉行爬蟲工程師 

 1. 積累專案實戰經驗 

我曾經面試過一個同學A,是某個培訓班出來的。在我問他簡歷上專案的技術細節時,他支支吾吾的答不出來,我一看這是沒做過專案啊,沒做過你就別浪費我時間了。

最後他跟我說實話,是培訓班偽造的簡歷,問我「能不能不要工資在這實習?」

我說「這事還是別了,你這專案經驗太弱,還有好多東西要補。」

然後我讓他至少先自己花一星期補補基礎,結果他嫌一星期太長了,他想馬上就找到工作。

其實我覺得他的問題就是出在心態上了。如果能堅持把專案啃下來,解決了開發過程中的各個關鍵點,能直接上手去做公司的事情的話,找到工作就是水到渠成的事情了。

 

 2. 寫的質量好的專案可以放 Github 

如果你認為你的程式碼寫的不錯,你可以放在 GitHub 上,寫上你所有的解決問題的流程。

但如果你寫得很爛,我認為面試官看了可能不是一個加分項,你還不如不寫,因為面試官會看,會發現你的程式碼暴露了很多問題。

 

3. 技術總結可以放到部落格或 Gitbook 

你在真正做專案的時候,是會遇到一些問題的,在解決之後可以把這個過程總結出來,寫成一篇筆記。這是對你的知識體系的一個完善,哪怕是再小的點,記錄下來也是有意義的。如果不方便發出來,也應該自己總結寫下來,不然過幾天就忘了。

積累的多了,這些學習筆記就形成了一個你的知識體系,這時候可以在 Gitbook 上作為一本電子書開源出來。如果別人看到你了,別人可能也就會聯絡你來做這份工作了。 

 

爬蟲工程師崗位要求掌握哪些? 

初級爬蟲工程師

  • 爬蟲方面:熟悉爬蟲框架,熟悉 xpath、正規表示式,有爬取經驗,瞭解常見策略,能優化爬取效率

  • Python基礎:尤其是資料結構的考察,知道怎麼折騰資料、併發程式設計

  • 前端程式設計:熟悉 HTML,CSS,JS

?‍?如果是應屆生,會考演算法。看看他對新的東西是否感興趣,是不是真的喜歡這一行。看看學習能力怎麼樣。如果基礎條件好的話可以培養。

?‍?如果是有專案經驗的人,就會看專案,考察專案中的一些細節。

 

中高階爬蟲工程師

  • 根據公司情況和業務,能找到現在爬蟲的問題

  • 能造輪子,快速開發分散式爬蟲框架。

  • 能解決複雜的攻防問題。提升併發能力,做自由的排程。

 

一個完整的爬蟲專案工作流程 

 

  • 獲得需求:比如產品經理提出,要和各個電商平臺去實時比價。如果別人比我們的低了,你可能要給我發一個郵件或者一個報警。 

  • 技術選型:讓需求落地,確定技術具體實現選型和方案。比如多久對比一次?如何確定兩個商品是一致的?如何突破對方的搜尋介面?

  • 分工開發:確定如何實現之後,就進行工程分工,誰來做爬取、誰來做解析。

  • 資料入庫:資料處理完成之後,錄入資料庫中。

  • 爬蟲監控:通過監控模組去看爬蟲是否持續正常工作、爬取的頁面有沒有改版發生結構變化。當監控報警時,就需要再去修改爬蟲,應對反爬。

不要忘記從全域性看資料的流動。爬蟲是為了收集資料,最終資料是用來服務於目的的。

 


 

我們最近推出了 Python 商業爬蟲學徒計劃,皓禹老師和侯爵老師一起手把手帶你從0基礎到掌握 Python 商業爬蟲。

有不少同學無法到北京聽線下兩天的面授課程,所以我們也提供了線上直播的方式,會錄製人像和程式碼螢幕這兩個機位,並且有線上舉手答疑和遠端程式碼review,儘可能的讓參加線上直播的同學獲得親臨現場一樣的體驗。

其實整個課程加實戰是1個半月的時長,會非常非常的注重實戰。其實我們之前每門課程都是實戰導向的,但這次會跟蹤到你的作業效果,確保做出來是專業的正確的,而不是隻有自己能用的玩具。

而且這次是第一次對接真實企業專案,相信通過這種方式能讓你迅速成長。如果說你作為獨立開發者自己接活都毫無壓力的話,那找到工作就更不是問題了。

所有的課程學習任務以待辦事項的方式列出,追蹤到每個人的完成效果。後續的專案實戰作業會以看板和 Git 的方式來進行。

課程相關資料都會分享給學徒們,可以永久觀看與使用。

如果想諮詢更多資訊,請加西西姐微信 794498950,備註學徒計劃

也可檢視課程詳情:http://hdxu.cn/X2EhL

 

相關文章