入門Python爬蟲需要掌握哪些技能和知識點?
對于程序員來說基本上不存在重復性的工作,任何重復勞動都可以通過程序自動解決。下面千鋒帶你一起了解爬蟲需要哪些相關的技能。
1、基本的編碼基礎(至少一門編程語言)
這個對于任何編程工作來說都是必須的。基礎的數據結構你得會吧。數據名字和值得對應(字典),對一些url進行處理(列表)等等。事實上,掌握的越牢固越好,爬蟲并不是一個簡單的工作,也并不比其他工作對編程語言的要求更高。
熟悉你用的編程語言,熟悉相關的框架和庫永遠是百益無害。我主要用Python,用Java寫爬蟲的也有,理論上講任何語言都可以寫爬蟲的,不過最好選擇一門相關的庫多,開發迅速的語言。用C語言寫肯定是自找苦吃了。
2、任務隊列
當爬蟲任務很大的時候,寫一個程序跑下來是不合適的:
如果中間遇到錯誤停掉,重頭再來?這不科學
我怎么知道程序在哪里失敗了?任務和任務之間不應該相互影響
如果我有兩臺機器怎么分工?
所以我們需要一種任務隊列,它的作用是:講計劃抓取的網頁都放到任務隊列里面去。然后worker從隊列中拿出來一個一個執行,如果一個失敗,記錄一下,然后執行下一個。這樣,worker就可以一個接一個地執行下去。也增加了擴展性,幾億個任務放在隊列里也沒問題,有需要可以增加worker,就像多一雙虧筷子吃飯一樣。
常用的任務隊列有kafka,beanstalkd,celery等。
3、數據庫
這個不用講了,數據保存肯定要會數據庫的。不過有時候一些小數據也可以保存成json或者csv等。我有時想抓一些圖片就直接按照文件夾保存文件。推薦使用NoSQL的數據庫,比如mongodb,因為爬蟲抓到的數據一般是都字段-值得對應,有些字段有的網站有有的網站沒有,mongo在這方面比較靈活,況且爬蟲爬到的數據關系非常非常弱,很少會用到表與表的關系。
4、HTTP知識
HTTP知識是必備技能。因為要爬的是網頁,所以必須要了解網頁。首先html文檔的解析方法要懂,比如子節點父節點,屬性這些。我們看到的網頁是五彩斑斕的,只不過是被瀏覽器處理了而已,原始的網頁是由很多標簽組成的。處理最好使用html的解析器,如果自己用正則匹配的話坑會很多。
5、運維
這個話題要說的有很多,實際工作中運維和開發的時間差不多甚至更多一些。維護已經在工作的爬蟲是一個繁重的工作。隨著工作時間增加,一般我們都會學著讓寫出來的爬蟲更好維護一些。
比如爬蟲的日志系統,數據量的統計等。將爬蟲工程師和運維分開也不太合理,因為如果一個爬蟲不工作了,那原因可能是要抓的網頁更新了結構,也有可能出現在系統上,也有可能是當初開發爬蟲的時候沒發現反扒策略,上線之后出問題了,也可能是對方網站發現了你是爬蟲把你封殺了,所以一般來說開發爬蟲要兼顧運維。