畢竟大資料行業在國内興起也就這幾年,而爬蟲工程師也由此從幕後走向台前,不清楚整個大行業的話,其實隻能看到很片面的價值。
回憶這幾年帶團隊的過程,還有團隊的發展,有些同學片面低估爬蟲工程師的價值,也有些同學盲目高看自已。這篇文章就說說我的想法,希望能讓大家更了解這一行的一些工作,希望對大家是有所幫助的。
關于爬蟲的話,面試的問題其實都差不多。我羅列一下:
- 自我介紹。我發現厲害的面試官一般都不會要你做自我介紹,而要你自我介紹的其實隻是需要幾分鐘看看你的履歷。至于面試官厲不厲害,其實看他問問題的角度就能看出來了。
- 項目中遇到最難的地方?是怎麼解決的?
- 詳細問你某個項目的過程。是以你需要很了解你自己做的項目。我被問到最多的是關于淘寶UA值的計算過程,似乎大家都對淘寶很感興趣。
- HTTP的三次握手和四次揮手。這個是個高頻,我被問了好幾次。
- 程序、線程和協程。
- 如何設計一個爬蟲。
- 常見的反爬機制有哪些,每種機制的應對方案。這個也是個高頻。
- 如何提高小組的代碼品質?我答的是peer review。
- 常見的去重政策和存儲方案。
- 用過哪些爬蟲架構。
基本就這些,可以看到,我很少會被問到隻和Python相關的問題(隻有一次,問了list和tuple的差別)。但是去研究下Python,總沒什麼壞處。另外一些可能的加分項:
- 技術部落格,github
- 英語
什麼是爬蟲工程師
簡單定義爬蟲工程師就是通過相關的網際網路技術或工具,擷取網站或相關應用公開可見資料的工程師。由于網際網路許多資料都是公開的,可以通過寫程式或使用工具,摸拟請求,擷取到目标網站傳回的資料,然後通過相關技術或手段,将資料結構化儲存下來。
比如我們可以通過爬蟲擷取大衆點評的餐飲資料
比如我們可以通過爬蟲擷取百度地圖的資料
比如我們可以通過爬蟲擷取豆瓣上的影評資料
爬蟲工程師需要掌握什麼技能
筆者曾經見過一副圖,基本也把一個爬蟲工程師會遇到的事情給說個遍,大家可以看一下
坦白說,這些知識點,都是建立在爬蟲擷取資料的基礎之上。而爬蟲擷取資料就兩種方式,一種就是自已寫代碼,一種就是用爬蟲工具。
1.代碼方向
通過寫代碼擷取資料,基本任意一款主流的代碼語言,其實都是有網絡通訊包可以來做爬蟲,無論是主流的python,還是java,還是c#都有,這裡面隻是由于python用的人比較多,有一些庫都封裝好,效率也高,是以用的人比較多(很多大資料團隊都在用python,是以就跟着用)。
通過代碼的達到精通需要以下幾個環節
1.熟悉任意一款語言,并達到可編寫任意功能性代碼的能力
2.熟悉HTTP協定,其實就是一個GET,一個POST,頂多帶上一個cookie
2.工具方向
這個就很好了解,精通某一款主流的采集工具,比如說我們八爪魚采集器
需要精通到什麼程度?
1.如果你會用我們八爪魚與XPATH,定位網頁任意元素
2.如果你知道如何八爪魚采集原理,懂得拆分規則,讓整個采集效率翻10倍
3.其實沒有天天使用我們八爪魚超過三個月以上,寫過一兩百個規則的,都不應該算精通吧
除以上兩個工具層面熟悉外,還需要熟悉以下東西:
1.防采集原理(驗證碼,多IP等)
2.html前端解析知識
3.分布式解決方案
4.正規表達式比對
基本上熟悉掌握了以上這些技能,也差不多能成為一名合格,思路清晰的爬蟲工程師了。寫代碼的有寫代碼的好處,用工具有用工具的好處,寫代碼的好處在于自由度比較大,挑戰比較大,入門比較難,而且作用其實不大,因為很多時候其實是在重複造輪子。
畢竟很多通用性的動作都是可以用爬蟲工具完成的,功能爬蟲工具都幫你做好了,你隻要會用就行。而工具呢,工具始終有一點點局限性,工具為了通用性,在一定程度是犧牲了某些功能的,在一些很特殊的場景,工具其實很難完成。
是以我一向的推薦就是,工具+代碼,才是一個現在主流的爬蟲工程師的配置。你可以使用工具,比如我們八爪魚,實作那99%的需求,但如果遇到特定的,自已留一手寫代碼解決,也是無妨的。
畢竟我們要的是解決問題,更别說python等等,配置個爬蟲程式一點都不難,網上教程一大把。(國内主流采集大神都是這麼做,能用工具的優先用工具,除非工具搞不定,才自已碼代碼)
爬蟲工程師的關聯技能
除了需要懂采集外,爬蟲工程師還需要一些其他的技能,這才是真正衡量一名爬蟲工程師是入門,還是普通,還是優秀的标準。其實在現在這個時代,複合型人才都是比較吃香的。
一個優秀的爬蟲工程師,他還需要以下幾項技術進行升華
1.資料清洗
因為采集下來的資料,很多時候都是一大段文本,你需要對文本進行提煉,也就是我們說的對資料進行清洗,才能得到更加幹淨的結構化資料,儲存在資料庫裡面。
有時候我們采集多份資料,也需要通過清洗進行關聯。這裡面比如我們擅于使用Excel的一些進階技巧,也包括會使用R等程式語言,對文本進行處理。在我們八爪魚資料中心團隊的同學,都具備資料清洗的技能。
2.資料挖掘
爬蟲後的資料挖掘,一般是指NLP這鬼東西。NLP是屬于人工智能範籌的,中文叫自然語言處理,簡單了解就是處理大量文本,從大量文本裡面挖掘出價值的一個東西。
在國内能做好的,都是屬于鳳毛鱗角的,我們八爪魚也有我們自已的NLP團隊,投入相當巨大,還沒做得特别出色,僅僅開始實作一些特定場景功能,能做一些單子了。我們為國内一些主流的AI公司,采集并挖掘後,輸出AI資料。我們的資料中心就有牛人專門幹這個的。
3.資料分析可視化
僅僅隻是将資料采集下來,儲存在資料庫裡面,僅僅隻是實作第一步的價值。資料分析與可視化,才是資料背後更大的價值。
是以需要對資料儲存進資料庫,然後通過相應的架構或程式開發,組織調用出來,輔助企業進行決策。是以我們八爪魚有專門的資料BI團隊,也有很多爬蟲工程師善于使用EXCEL,一般可視化BI工具,為項目提供可視化資料支援。
4.深刻了解業務
無論是對網際網路公開資料的擷取能力的了解,還是對業務需求的了解,也是考量一個優秀的爬蟲工程師的重要衡量标準,說白了就是,不僅要懂技術,而且要懂業務,成為複合型的爬蟲工程師。能到這個程度,才能将爬蟲工程師的價值無限放大。比如了解風控業務,比如了解AI業務等。這個崗位我們有售前,有顧問等。
如何規劃爬蟲工程師的路線
在我的團隊裡面,是有L崗與T崗這兩個路線的,L崗一般是指偏業務的爬蟲工程師的崗位,T崗一般是指偏技術的爬蟲工程師崗位,這跟人的性格有關,一些同學更喜歡靠近業務,表達能力好,反應快思路清晰,他就會往L崗走,一些同學更偏向技術,狂熱于突破各種難題,輸出更好的解決方案,他就會往T崗走。
L崗一般有什麼職位
1.技術支援(中小客戶方向)
2.售前(大客戶方向)
3.資料中心Leader/項目Leader
4.方案顧問(深入業務場景)
T崗一般有什麼職位
1.爬蟲項目一線開發傳遞人員
2.資料專員
3.進階資料專員
4.爬蟲教育訓練講師
月薪45K的Python爬蟲工程師告訴你爬蟲應該怎麼學,太詳細了!
想用Python做爬蟲,而你卻還不會Python的話,那麼這些入門基礎知識必不可少。很多小夥伴,特别是在學校的學生,接觸到爬蟲之後就感覺這個好厲害的樣子,我要學。但是卻完全不知道從何開始,很迷茫,學的也很雜,下面就跟着小編一起來看看想用python來做爬蟲到底需要學習哪些知識吧!
Python入門
1、基本知識、資料類型、流程控制。
人生苦短,快用Python
2、函數
人生苦短,隻用Python
3、用子產品
4、I/O基礎
人生不短,也用Python
5、Linux基礎
Linux基礎
最後包管理和虛拟環境都要有所了解,怎麼樣,這些基礎你都會了嘛!
web前端
當然光學了基礎是遠遠不夠的,我們要深入做爬蟲,首先得了解這個東西是怎麼做的了解清楚它的原理,那麼web前端方面的學習是必不可少的,下面我們來了解一下。
1、标簽
标簽
2、樣式
樣式
3、JS文法
JS文法
4、jQuery
jQuery
5、Ajax
Ajax
6、bootstrap
bootstrap
前端部分不用涉及太深,隻是學爬蟲的話這些就完全夠用了,俗話說“工欲善其事,必先利其器”,是以我們再把下面這些Python知識學完後,就可以毫無後顧之憂的來學習爬蟲了。
Python進階
1、面向對象
面向對象
2、裝飾器、惰性器
裝飾器、惰性器
3、進階子產品
進階子產品
4、 并發程式設計(多線程與多程序)
什麼是程序、線程
多程序
多線程
Future實作多程序、多線程
5、并發程式設計(協程、異步IO)
協程、異步IO
好了,這些東西全部學會以後,就可以進行正式的爬蟲學習了,在之後的學習路途中很多東西一看到就胸有成竹,想皮都皮不起來。
爬蟲基礎
學習爬蟲,我們首先要了解什麼是爬蟲以及它的工作流程,知己知彼,方能百戰百勝嘛。當然這些大家都知道的,廢話不多說,先來看看爬蟲基礎知識點。
1、請求與響應
請求與響應
2、爬蟲與反爬蟲
爬蟲與反爬蟲
3、開發工具
開發工具
4、Urllib庫使用詳解與項目實戰
Urllib庫使用詳解與項目實戰
5、requests庫安裝使用與項目實戰
requests庫安裝使用與項目實戰
6、太多了看圖
爬蟲基礎最後一彈
好了,如果隻是想入個門的話,這些都差不多了,但我想每個學爬蟲的小夥伴,都是想成為一個偉大的爬蟲攻城獅的吧!來來來,讓我們繼續看看進階學習方法。
爬蟲進階
1、爬蟲架構實作
爬蟲架構實作
2、破解反爬技術
破解反爬技術
3、代理池實作
代理池實作
4、模拟登陸
模拟登陸
5、pyspider架構
pyspider架構
爬蟲進階部分
1、APP的抓取
APP的抓取
2、Scrapy架構
Scrapy架構
3、分布式爬蟲實戰
分布式爬蟲實戰
4、分布式爬蟲部署