爲了方便對照,咱們先給程序加上註釋
python
#!/usr/bin/env python # 告訴系統應該使用哪一個編譯器來編譯這個文件 # -*- coding: UTF-8 -*- # 使python程序支持中文編碼格式 __author__ = '217小月月坑' # 這個程序的做者是誰,注意:先後都是兩個 "_" import urllib2 # 導入urllib2 模塊 ''' 1. 調用urllib2庫裏面的urlopen函數來請求打開一個網站,傳入一個URL,這個URL就是你想要爬取的網站的網址 2. 執行urlopen函數以後,返回一個response對象,返回信息便保存在這裏面 ''' response = urllib2.urlopen("http://python.jobbole.com/81339/") print response.read() # 使用read()方法將response對象的內容打印出來
好了,咱們發現咱們使用到了幾個新的函數,如今來了解一下他們的做用是什麼
服務器
1. 詳解urlopen函數
urlopen通常接受三個參數,它的參數以下:
urlopen(url, data, timeout)
第一個參數url即爲URL,第二個參數data是訪問URL時要傳送的數據,第三個timeout是設置超時時間。
第二三個參數是能夠不傳送的,data默認爲空None,timeout默認爲 socket._GLOBAL_DEFAULT_TIMEOUT
這個函數將會是咱們前半部分學習的中心點,後面會慢慢講解它的每一個參數的使用
2. 詳解read()函數
read()函數是將response裏面的內容讀取出來,若是不加read()的話,就只是顯示response的描述信息
socket
3. 另外一種更規範的寫法
函數
urlopen參數能夠傳入一個request請求,它其實就是一個Request類的實例,構造時須要傳入Url,Data等等的內容
咱們能夠將前面的程序這樣寫:
學習
#!/usr/bin/env python # -*- coding: UTF-8 -*- __author__ = '217小月月坑' import urllib2 # 先構建一個請求 request = urllib2.Request ("http://python.jobbole.com/81339/") # 使用urlopen函數請求網頁返回信息 response = urllib2.urlopen(request) print response.read()
這個寫法的執行結果跟上一個徹底同樣,可是好處是程序的邏輯更清晰。
由於在構建請求時還須要加入好多內容,經過構建一個request,服務器響應請求獲得應答,這樣顯得邏輯上清晰明確。
咱們從此的學習都會使用這個寫法,因此它很重要,儘可能理解,實在理解不了能夠先把它背下
網站