1,基本編碼基礎(至少壹種編程語言)
這對任何編程工作都是必要的。妳必須知道基本的數據結構。對應的數據名稱和值(字典),處理壹些URL(列表)等等。其實掌握的越牢固越好。爬蟲不是簡單的工作,也不是比其他工作對編程語言要求更高的工作。
熟悉您使用的編程語言以及相關的框架和庫總是有益的。我主要用Python,也有人用Java寫爬蟲。理論上任何語言都可以寫爬蟲,但是最好選擇和Kuduo相關的,發展迅速的語言。用C語言寫肯定是自找麻煩。
2.任務排隊
當爬蟲的任務很大時,不適合寫壹個程序運行下來:
如果中途出錯,停下來重新開始?這是不科學的。
我如何知道程序在哪裏失敗了?任務之間不應該有交互。
如果我有兩臺機器,我該如何分工?
所以我們需要壹個任務隊列,任務隊列的作用就是把所有規劃好的網頁放到任務隊列裏。然後工人把它從隊列中取出來,壹個壹個地執行。如果壹個失敗了,記錄下來,然後執行下壹個。這樣,工人可以壹個接壹個地執行。還增加了擴展性,把幾億個任務放到隊列裏都沒問題。如果有必要,可以增加工人,就像多壹雙筷子吃飯壹樣。
常用的任務隊列有kafka,beanstalkd,芹菜等。
3.數據庫?資料庫
不用說,數據肯定會保存在數據庫裏。但是有時候壹些小數據也可以保存為json或者csv。我有時候會想抓壹些圖片,直接按照文件夾保存文件。建議使用NoSQL的數據庫,如mongodb,因為爬蟲捕獲的數據壹般都是字段——值得對應的,有些字段在某些網站上可用,而在其他網站上不可用。mongo在這方面比較靈活,爬蟲爬出來的數據關系非常非常弱,很少用到表之間的關系。
4.HTTP知識
HTTP知識是必備技能。因為妳要爬壹個網頁,妳必須了解這個網頁。首先要了解html文檔的解析方法,比如子節點、父節點、屬性。我們看到的網頁是五顏六色的,但是只經過了瀏覽器的處理。最初的網頁是由許多標簽組成的。最好使用html解析器進行處理。如果自己用常規搭配,會有很多坑。
5.使用和維護
這個話題要講的很多,實際工作中運營開發的時間幾乎更多。維護已經工作的爬行動物是壹項繁重的工作。隨著工作時間的增加,壹般我們會學會讓寫好的爬蟲更好的維護。
比如爬蟲的日誌系統,數據統計等等。把爬蟲工程師和運維分開也是不合理的,因為如果壹個爬蟲不工作,可能是因為要抓取的網頁更新了結構,也可能是系統上出現了,也可能是壹開始開發爬蟲的時候沒有找到防抓取策略,上線後出了問題, 也有可能是對方網站發現妳是爬蟲,封殺了妳,所以壹般來說,開發爬蟲的時候需要兼顧運維。