parse 可以對url 拆分、組合、編碼、解碼、拼接
from urllib import parse,error,request
parse.urlencode():將字典類型的參數(shù)轉(zhuǎn)為url編碼格式
form_data = {
'sex': 'f',
'key': '',
'stc': '1: 11, 2: 20.28, 23: 1',
'sn': 'default',
}
get請求直接使用urlencode將參數(shù)轉(zhuǎn)為url編碼格式
form_data1 = parse.urlencode(form_data)
print(form_data1)
post請求urlencode將參數(shù)轉(zhuǎn)為url編碼格式,然后使用encode方法將字符串轉(zhuǎn)為bytes類型
form_data2 = parse.urlencode(form_data).encode('utf-8')
print(form_data2)
parse.parse_qs():將url編碼格式轉(zhuǎn)換為字典
parmas = parse.parse_qs(form_data1)
print(parmas)
key = '厲害了我的國'
parse.quote():將中文轉(zhuǎn)為url編碼
result = parse.quote(key)
print(result)
parse.unquote():將url編碼的字符轉(zhuǎn)化為中文字符
unquote = parse.unquote(result)
print(unquote)
parse.urljoin():將不完整的url參照基類url,拼接完整
base_url = 'http://www.qidian.com/book/123456.html'
sub_url = '123456789.html'
fun = parse.urljoin(base_url,sub_url)
print(fun)
ParseResult(
scheme='http', 協(xié)議
netloc='www.qidian.com', ip域
path='/book/123456.html', 路徑
params='', 參數(shù)
query='', 查詢參數(shù)(?后面拼接的參數(shù))
fragment='' 錨點
)
parse.urlparse():將url進行拆分
result = parse.urlparse(base_url)
print(result)
print(result.scheme)
parse.urlunparse(): 將url的各個部分合并為一個完整的url
url_datas = ('http','www.baidu.com','book','','wd=xxx','1234')
fun_url = parse.urlunparse(url_datas)
print(fun_url)
URLError和HTTPError
URLError:來自urllib庫的error模塊,繼承自O(shè)SError,由request模塊產(chǎn)生的異常都可以通過捕捉這個類來處理.
產(chǎn)生的原因主要有:
- 沒有網(wǎng)絡(luò)連接
- 服務(wù)器連接失敗
- 找不到指定的服務(wù)器
HTTPError是URLError的子類,我們發(fā)出一個請求時,服務(wù)器上都會對應(yīng)一個response應(yīng)答對象,其中它包含一個數(shù)字"響應(yīng)狀態(tài)碼"。
有三個屬性:
code:返回HTTP的狀態(tài)碼
reason:返回錯誤原因
headers:返回請求頭