1. 程式人生 > >python2.7 httplib, urllib, urllib2, requests 庫的簡單使用

python2.7 httplib, urllib, urllib2, requests 庫的簡單使用

httplib實現了HTTP協議,是比較底層的實現,一般不直接使用。
urllib, urllib2是對httplib的高層封裝,urllib2可以接受一個Request類的例項來設定URL請求的headers,urllib僅可以接受URL。urllib提供urlencode方法用來GET查詢字串的產生,而urllib2沒有。所以urllib常和urllib2一起使用。
requests是python第三方庫,基於urllib,使用起來比urllib簡便。

urllib

以開啟百度的首頁為例

import urllib

res = urllib.urlopen('http://www.baidu.com'
) print res.getcode() for line in res: print line res.close()

urllib2

urllib2與urllib的使用類似,但urlopen時接收了一個Request例項,並且對response的讀取要方便一些。

import urllib2

req = urllib2.Request('http://www.baidu.com')
res = urllib2.urlopen(req)
print res.code
print res.read()
res.close()

urllib + urllib2

以百度的搜尋為例,請求格式為

https://www.baidu.com/s?wd=xxx,用urllib的urlencode方法格式化引數wd=xxx

import urllib2
import urllib

url = 'http://www.baidu.com/s'
values = {'wd': 'word'}
data = urllib.urlencode(values)

req = urllib2.Request(url + '?' + data)
response = urllib2.urlopen(req)
print response.code
print response.read()

httplib

import
httplib import urllib values = {'wd': 'word'} data = urllib.urlencode(values) conn = httplib.HTTPConnection('www.baidu.com') conn.request('GET', '/s?'+data) response = conn.getresponse() print response.status print response.read() conn.close()

requests

在使用requests之前要確保你已經安裝了requests模組,並且是最新的。如果沒有,使用pip install requests安裝。

import requests
url = 'http://www.baidu.com/s'
values = {'wd': 'word'}
res = requests.get(url, values)
print res.status_code
print res.content

可以看出,使用requests的實現要簡便許多