以百度為例,一般都會在url後面有?wd=**** 的這種,但是往往我們複制下來以後就會顯示%253D%25E4%25B8%這種格式,這是什麼原因呢,原因就在于計算機其實是不識别我們輸入的中文,需要把中文轉碼成ascii來讓計算機識别,下面就帶大家來了解一下如何手動讓中文轉ascii。
import urllib.request
import urllib.parse
import string
def get_params():
url = 'http://www.baidu.com/s?'
# 把中文字元轉成ascii碼,使用urllib.parse.urlencode, 參數使用字典格式,自動轉化
params = {
'wd' : '中文',
'key': 'zhang',
'value': 'san'
}
result = urllib.parse.urlencode(params)
final_url = url + result
# print(final_url)
# 加上下面這個方法就可以請求
end_url = urllib.parse.quote(final_url, safe=string.printable)
response = urllib.request.urlopen(end_url)
data = response.read().decode('utf-8')
print(data)
with open('baidu.html', 'w', encoding='utf-8') as fp:
fp.write(data)
if __name__ == '__main__':
get_params()
下面你的檔案就會生成一個baidu.html的檔案,儲存在本地,去打開你的html檔案看看是不是你輸入的文字吧。