為什麽寫爬蟲,我們要選擇Python
為了抓到那些響應,我們就不得不繼續完善http協議的解析功能,貢獻了很多代碼。。
為什麽要自己實現基本的http協議呢?難道就沒有好的第三方庫可以用嗎?現在想來,那個爬蟲也就是看上去能用,聽上去高大上,實際上問題很多。
那個網絡爬蟲程序維護了一兩年最終放棄了,後來的爬蟲技術都開始用Python來實現了。
現在如果讓我實現一個網絡爬蟲,二話不說,肯定是要用Python。究其原因,可能有已經幾點經驗和教訓跟大家分享一下。
1. 變幻莫測的網絡爬蟲
寫過爬蟲,可能都有這麽一個感覺,就是昨天跑的好好的爬蟲,今天可能就出問題,不work了。這裏面的原因可能就是,網頁的改版,網站的封鎖等等。遇到這種情況,我們就必須在最快的時間內調試找出問題所在,並以最快的速度修復,使其盡快上線跑起來。
2. 隨機應變的Python
鑒於上述爬蟲復雜的變化,寫網絡爬蟲就必須依賴一個快速開發、靈活的語言,同時又有完整豐富的庫支撐。而同時具備這些優點的語言,無疑就是Python了。所以,Python天然就是為爬蟲而生,爬蟲天然就是擇Python而用。
3. 簡潔豐富的Python
看到Python和網絡爬蟲這種天然相連的關系,小猿們不禁要問,Python適合網絡爬蟲的天然屬性都是哪些呢?不急,聽老夫慢慢道來。
3.1 簡潔的語法
Python的語法非常簡單,提倡簡潔而不簡單,Python開發者的哲學就是“用一種方法,最好是只有一種方法來做一件事”,這種哲學讓你寫的代碼沒有太多個人風格,易於讓他人看懂你的代碼,也讓你輕易看懂別人的代碼。Python的簡潔,也讓開發者可以僅用幾行代碼就實現一個功能,而同樣的功能用Java可能要幾十行上百行,要用C++可能是幾百行。
大家可以試試在Python解釋器裏面運行import this,來品味一下Python的哲學:
>>> import this
> The Zen of Python
> by Tim Peters
> Beautiful is better than ugly.
> Explicit is better than implicit.
> Simple is better than complex.
> Complex is better than complicated.
> Flat is better than nested.
> Sparse is better than dense.
> Readability counts.
> Special cases aren‘t special enough to break the rules.
> Although practicality beats purity.
> Errors should never pass silently.
> Unless explicitly silenced.
> In the face of ambiguity, refuse the temptation to guess.
> There should be one-- and preferably only one --obvious way to do it.
> Although that way may not be obvious at first unless you‘re Dutch.
> Now is better than never.
> Although never is often better than *right* now.
> If the implementation is hard to explain, it‘s a bad idea.
> If the implementation is easy to explain, it may be a good idea.
> Namespaces are one honking great idea -- let‘s do more of those!
Python簡潔的語法,讓你實現、修改爬蟲都變得輕松起來。也就是說,寫起來賊快!人生苦短,何不Python
為什麽寫爬蟲,我們要選擇Python