通常指示着在处理非ASCII字符(如中文)时出现了问题。
两方面需要处理
一方面是url
from urllib.parse import quote
url = "http://example.com/?query=" + quote("中文字符")
另一方面是post请求中的入参
import json
data = {'key': '中文值'}
encoded_data = json.dumps(data).encode('utf-8')
请求头也需要修改
headers = {'Content-Type': 'application/json; charset=utf-8'}
示例代码
import urllib.request
import json
url = 'https://example.com/?query'+ quote("中文字符") # url处理
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, likeGecko) Chrome/74.0.3729.169 Safari/537.36',
'Content-Type': 'application/json; charset=utf-8'
}
keyword = input('请输入参数:')
data = {
'key': keyword
}
encoded_data = json.dumps(data).encode('utf-8') # 入参处理
request = urllib.request.Request(url=url, headers=headers, data=encoded_data)
response = urllib.request.urlopen(request)
print(response.read().decode('utf-8'))