如果你現在打開招聘軟體搜索爬蟲工程師這個職位,發現給的工資都不低,而且你會發現,幾乎很多都是要求會python語言。那麼今天就來說說關於爬蟲工程師這個崗位到底是幹嘛的。
Python爬蟲工程師的主要工作內容
先來說說為什麼叫「爬蟲」,我們都知道,網際網路是由一個個超連結組成的,從一個連結跳到另一個網頁,而在新的網頁裡面,又會有很多連結。從理論上說,無論從哪個網頁開始,只要有連結,我們不斷的點擊,這樣就可以走遍整個網際網路!而這個過程和蜘蛛沿著網爬類似。那麼這些沿著網爬的程序怎麼來呢?這時候就需要爬蟲工程師了,你需要寫出這些程序並且保存下來獲得的信息。
爬蟲的規模有大有小,下面這些,我認為都可以叫做爬蟲:
例如爬某乎的作者和回答;再比如爬百度網盤的資源,存到資料庫中(當然,只是保存資源的連結和標題),然後製作一個網盤的搜尋引擎;同樣的道理:種子網站的搜尋引擎也是這樣的。
說到這,你應該大概知道爬蟲的任務其實就是是獲取數據。那就不得不提大數據這個概念了,我們站在網際網路的角度上來說,數據總體可分為兩種:一是用戶產生的(UGC),二是通過手段獲取的。而這裡所說的手段,通常就是爬蟲技術。爬蟲獲取數據的方式有很多。總的來說,就是聚合數據的同時讓他們結構化。
爬蟲工程師能做什麼
數據聚合類網站。例如主流的搜尋引擎百度、谷歌等。常見的搜尋引擎都能在幾毫秒之內提供給你包含某些關鍵字的頁面,而這些頁面並不是實時給你抓取的,是提前抓好,然後保存在他們自己的資料庫裡,所以當我們搜索時,才能實現快速展示出如此多的搜索結果。
爬蟲工程師需要掌握哪些基礎的必備知識呢?
必備的HTTP知識
html文檔的解析方法必須懂;HTTP協議也要理解掌握;瀏覽器要熟練;
運維
爬蟲的運維可以參考以下幾個思路:
1 看數據增加的量
定向爬蟲(指的是只針對一個網站的爬蟲),看數據的增加趨勢是否是正常即可。非定向爬蟲的數據增量相對來說就沒那麼穩定了。
2 觀察爬蟲執行的情況
可以在每次爬蟲任務執行的時候,將其執行的時間、狀態、目標url、異常等放入一個日誌系統,然後通過一個可視化的手段可以清晰地看到爬蟲成功與否。
3 爬蟲拋出的Exception
只說一點,忽略正常的異常(比如Connection錯誤,鎖衝突等),當然,如果你不擔心被這些錯誤淹沒的話,當我沒說。
爬蟲與反爬
這是必然會存在的,任何一個正常的企業都不可能放任自己的企業網站被人爬吧。這裡只說我常見的一些反爬措施,如果有更多歡迎補充。
1 訪問次數
這個不難理解吧,當你訪問太頻繁時,你的ip可能一段時間內就無法訪問該網站了。對於爬蟲來說,碰到這種情況,限制任務的頻率就可以了,儘量讓爬蟲像一個正常人一樣訪問網頁即可。
2 登錄受限
說到這個,反爬措施有時候會影響到真實用戶。事實上反爬越嚴格,誤殺用戶的可能性也越高。遇到這個情況,同樣可以通過模擬登錄的方式解決。
3 通過Header封殺
瀏覽器訪問網站會有header,也會有作業系統的信息。但我們使用程序訪問市就不會有這樣的header。這時候,只要在訪問的時候加上header就可以了。
4 JavaScript腳本獲取網站數據
要知道有一些單頁面網站的內容並不是通過伺服器直接返回的,而是伺服器返回一個客戶端JavaScript程序,通過JavaScript獲取想要的內容。甚至,JavaScript在本地計算一個token,然後通過這個token來進行AJAX獲取相關內容。而本地的JavaScript又是經過代碼混淆和加密的,而token不可能被破解。這時,我們可以直接運行這個客戶端程序,這可以很好地模擬真實用戶!
5 關於驗證碼
驗證碼是專門用來識別人與計算機的手段。對於反爬方來說,這種方式對真實用戶和搜尋引擎的危害較大。通過模擬瀏覽器也是可以破解的。
6 ip限制
網站可能將識別的ip永久封殺,這種方式容易誤傷用戶。破解辦法比較簡單,代理。這基本上只能殺殺小爬蟲。
7 站內反爬
有一些網站將網站內容用只有人類可以接受的形式來呈現。比如將內容用圖片的形式顯示。但是近幾年來人類和機器的差別越來越小,圖片其實可以用OCR準確率非常高地去識別。
說起來,爬蟲工程師對從業人員的要求還是有點高的,所以平時在工作過程中,應該多多學習這方面的知識,提升自己的工作能力。爬蟲工程師現在已經成為越來越搶手的職業,知道的人多,但大多不精。學好python吧,錯過python,你將錯過一個時代