urlopen一般接受三個參數(shù),它的參數(shù)如下:
urlopen(url,data,timeout)
第一個參數(shù)url即為URL,第二個參數(shù)data是訪問URL時要傳送的數(shù)據(jù)绷柒,第三個timeout是設(shè)置超時時間愚铡。
第二三個參數(shù)是可以不傳送的,data默認為空None悯嗓,timeout默認為 socket._GLOBAL_DEFAULT_TIMEOUT
執(zhí)行urlopen方法之后,返回一個response對象卸察,返回信息便保存在這里面
#也可以用其他的變量比如aaa
response對象有一個read方法脯厨,可以返回獲取到的網(wǎng)頁內(nèi)容
其實上面的urlopen參數(shù)可以傳入一個request請求,它其實就是一個Request類的實例,構(gòu)造時需要傳入Url,Data等等的內(nèi)容坑质。比如上面的兩行代碼合武,我們可以這么改寫
import urllib2
response = urllib2.urlopen("http://www.baidu.com")
print response.read()
改寫成
import urllib2
request=urllib2.Request("http://www.baidu.com")
response=urllib2.urlopen(request)
print response.read()
運行結(jié)果是完全一樣的,只不過中間多了一個request對象洪乍,推薦大家這么寫眯杏,因為在構(gòu)建請求時還需要加入好多內(nèi)容,通過構(gòu)建一個request壳澳,服務器響應請求得到應答岂贩,這樣顯得邏輯上清晰明確。
數(shù)據(jù)傳送分為POST和GET兩種方式巷波,兩種方式有什么區(qū)別呢萎津?
最重要的區(qū)別是GET方式是直接以鏈接形式訪問,鏈接中包含了所有的參數(shù)抹镊,當然如果包含了密碼的話是一種不安全的選擇锉屈,不過你可以直觀地看到自己提交了什么內(nèi)容。POST則不會在網(wǎng)址上顯示所有的參數(shù)垮耳,不過如果你想直接查看提交了什么就不太方便了颈渊,大家可以酌情選擇。
參考自:? http://python.jobbole.com/81336/