Python 的標準庫urllib.parse模塊中提供了用來編碼和解碼的方法亩歹,分別是 urlencode() 與 unquote() 方法抒倚。
下面以百度搜索為例進行講解斟冕。首先打開百度首頁丽惶,在搜索框中輸入“爬蟲”,然后點擊“百度一下”差牛。當搜索結(jié)果顯示后命锄,此時地址欄的 URL 信息,如下所示:
https://www.baidu.com/s?wd=爬蟲&rsv_spt=1&rsv_iqid=0xa3ca348c0001a2ab&issp=1&f=8&rsv_bp=1&rsv_idx=2&ie=utf-8&tn=baiduhome_pg&rsv_enter=1&rsv_dl=ib&rsv_sug3=8&rsv_sug1=7&rsv_sug7=101
可以看出 URL 中有很多的查詢字符串偏化,而第一個查詢字符串就是“wd=爬蟲”脐恩,其中 wd 表示查詢字符串的鍵,而“爬蟲”則代表您輸入的值侦讨。
在網(wǎng)頁地址欄中刪除多余的查詢字符串驶冒,最后顯示的 URL 如下所示:
https://www.baidu.com/s?wd=爬蟲
使用搜索修改后的 URL 進行搜索,依然會得到相同頁面搭伤。因此可知“wd”參數(shù)是百度搜索的關(guān)鍵查詢參數(shù)只怎。下面編寫爬蟲程序?qū)?“wd=爬蟲”進行編碼袜瞬,如下所示:
from urllib import parse
#構(gòu)建查詢字符串字典
query_string = {'wd' : '爬蟲'}
#調(diào)用parse模塊的urlencode()進行編碼
result = parse.urlencode(query_string)
#使用format函數(shù)格式化字符串怜俐,拼接url地址
url = 'http://www.baidu.com/s?{}'.format(result)
print(url)
輸出結(jié)果,如下所示:
http://www.baidu.com/s?wd=%E7%88%AC%E8%99%AB
了使用 urlencode() 方法之外邓尤,也可以使用 quote(string) 方法實現(xiàn)編碼拍鲤,代碼如下:
from urllib import parse
#注意url的書寫格式,和 urlencode存在不同
url = 'http://www.baidu.com/s?wd={}'
word = input('請輸入要搜索的內(nèi)容:')
#quote()只能對字符串進行編碼
query_string = parse.quote(word)
print(url.format(query_string))
________________END______________