出於某些目的,須要在網上爬一些數據。考慮到Python有各類各樣的庫,之前想試試Pycharm這個IDE,就決定用它了。首先翻完《深刻Python3》這本書,瞭解了它的語法之類的。下面就如下載http://www.meinv68.com/爲例子開始幹活了:html
採集的有點慢。須要採集的數據有三十多萬條。可是一個頁面只有十條數據,並且每三四秒左右才能從服務器抓到一個頁面。剛開始想着用多線程之類的加速,但想着抓一次就行了,並且有人鄙視說,抓太快對服務器負擔太大,就讓它跑了個通宵。只抓了十萬條數據,並且還有漏的。正則表達式
而後就找到另一個網站,繼續抓。這個時候蛋疼了,那網頁裏的內容大部分都是js之類生成的。第一反應就是看看有沒人用Python實現一個js的解釋器。結果發現這個工具量太大,不少庫都必須依靠瀏覽器來解析,過重量級。先放一放,就先看看這個js裏有些啥,會不會直接有須要的數據。瀏覽器
之前沒有網頁開發的經驗,只是問過同窗什麼js,asp語言是幹嗎用的。可是Firefox好久以前就裝了FireBug這個插件,就拿出來隨便點點。很容易看到了加載的js,可是看了半天沒發現有想要的東西。而後繼續隨便點點,發現加載的不僅一個腳本,最後在控制檯裏,發現Get了一個aspx文件,裏面就有想要的數據。服務器
下面繼續是Python的事了:多線程
由於這個腳本很小,比起抓整個網頁來講,效率好太多了,一秒鐘左右抓一個頁面,並且一個頁面大概有170條數據。跑了二十分鐘左右就抓完了。函數
後:工具
之前用C++這樣的靜態類型語言,一個表達式的值,一個函數的返回值只能是一種類型。可是Python則不一樣,好比open()會根據你打開模式返回不一樣的類型的對象。雖說C++的parser作起來很難,可是隻要作出來,就能很容器肯定一個變量的類型(模板中的除外,因此C++11放棄Concept的時候仍是略讓人蛋疼的),而後IDE就能進行很好的自動補全建議。可是動態類型語言這方面則略爲蛋疼了,對IDE要求高了一點。好處則是很方便靈活,寫函數裏也不怎麼糾結參數的實際類型,全特麼是模板參數……好在PyCharm能根據一個函數的docstring判斷參數的類型。網站
還有就是Python裏對機器的控制弱了點。由於數據量有點大,因此不得不關心了下list的實現。它相似C++ stl裏的vector,可是又沒有提供設置容量的方法。如今就用collection.deque將就了一下。url