天天看點

python urllib.request.urljoin_Python urllib Request 用法

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()

1

2

3

4

5

6

7

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()

1

2

3

4

5

6

7

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()

1

2

3

4

5

6

7

8

9

10

11

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()

1

2

3

4

5

6

7

8

9

10

11

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