換個思路學Python-以爬蟲為例(一)
接觸編程也有幾年了,用過Delphi Java.寫過一些在線考試,人員管理什麼的軟體.最近覺得網路爬蟲很有意思,百度之,發現寫爬蟲的話,用Python方便些,那就開始吧.
Python是個動態類型 解釋型語言,與之前的delphi(pascal) java完全不一樣.所以稱之為零基礎學Python,不是科班出身,學習過程以野路子為主.希望給大家提供個新的思路吧.
在開始之前,先啰嗦幾句關於編程的體會: 所謂編程,就是用計算機模擬人類做事情.面對一個問題,如果你不知道程序怎麼解決,那麼先想想人是怎麼解決這個問題的. 至於演算法,就是針對計算機可以比人更長時間的工作,可以記住比人更多的內容,這兩個特點,來改進做事情的方式. 學習Python就一直按這個思路來進行.
下面開始了
網路爬蟲是做什麼的? 就是把網路上的某一你關心的資料收集整理下來.人也可以做這個事,只是電腦不知疲倦,可以幫你收集海量的資料.
目標1:收集電影票房數據
在Python上陣之前,按上面提出的思路,我們先想想人類是如何做這個事情的, 這個人類的名字就叫小明吧. 做為老網蟲的小明很容易就可以搞定這件事.小明先打開電腦的瀏覽器,輸入"百度一下,你就知道"打開百度網站,輸入電影票房幾個字,風輕雲淡的按下回車,一大票關於電影票房的網站就出來了. 打開一個你覺得有眼緣的鏈接吧.這個網站是:movie.mtime.com/boxoffice/#CN/daily 最近<湄公河行動>很火,那就關心一下這部電影的票房吧.
收集票房這個目標達到了,只是小明不是鋼鐵煉成的.他堅持不了一個星期. 這種長時間的重複勞動,還是電腦這個東西來做好了.小明寫好程序,就可以高高興興的找妹子了.
終於開始寫程序了
第一件事: 把網頁抓回來
人是怎麼乾的: 輸入網址,瀏覽器就顯示對應的網頁
Python怎麼干: 和人一樣.
第一個語句 :
html=request.urlopen("http://localhost:8080/test1.html")
這個語句的意思是 使用request打開網址 "http://localhost:8080/test1.html" 把得到的東西放到html 這個變數中
等等 , 這個語句沒法執行?
request is not defined 這個提示的意思是: request是什麼鬼?
這裡說一下Python中最好用的庫了. 前輩大神們幫我們做好了很多事情,放在一起就是庫. 這裡我們用到了urllib這個庫,這東西怎麼用呢? 當然是告訴Python 我要用urllib這個庫,語句為
from urllib import request
這個語句意思是 從urllib庫中導出request 這樣就可以使用request了
再試一次
這個 我現在的理解是一個對象,就是request 從 http://www.baidu.com取回來的東西.其它就是一個網頁啦.
你一定很想知道這個東西到底有什麼內容? 那就把它讀出並列印吧
print(html.read())
這句的意思 讀html內容,用print列印.
見證奇蹟吧
奇蹟吧,這東西只有計算機能看懂吧. 怎麼辦? 前面說了,前輩大神們為我們做好庫了.那就是Beautifulsoup (美麗濃湯?) 欲知後事如何,請期待更新.....推薦閱讀:
※純 Python 製作 GIF 迷宮動畫 (不使用任何第三方庫) 演示 Wilson 演算法 + DFS 演算法 + LZW 編碼演算法
※python 關於 for循環 命名空間和變數作用域的一個疑問?
※chapter 9 - 用戶角色
※為什麼我總是感覺python的語法很挫了,有人有同感嗎?