编码的由来:
ASCII编码 127字符 美国
GB2312编码 中国
Unicode 所有语言均支持
urllib.parse.quote方法 将汉字变成unicode字符
import urllib.request
import urllib.parse
#获取源码
url = 'https://www.baidu.com/s?wd='
headers = {'User-Agent':'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Mobile Safari/537.36'}
#将汉字变成unicode编码,需要urllib.parse
name = urllib.parse.quote('中文')
url = url + name
#请求对象定制
request = urllib.request.Request(url = url,headers = headers)
#模拟浏览器向服务器发送请求
response = urllib.request.urlopen(request)
#获取响应内容
content = response.read().decode('utf-8')
print(content)
urllib.parse.urlencode 多个参数的时候用
import urllib.parse
import urllib.request
url = 'https://www.baidu.com/s?'
data = {
'wd':'周杰伦',
'sex':'男',
'location':'台湾'
}
#将data字典中的全部转化为unicode编码,且&连接
a = urllib.parse.urlencode(data)
#完整的url(请求资源路径)
url = url +a
#UA反爬
headers = {'User-Agent':'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Mobile Safari/537.36'}
#请求对象定制
request = urllib.request.Request(url = url ,headers = headers)
#模拟浏览器发送请求
response = urllib.request.urlopen(request)
#获取源码数据
content = response.read().decode('utf-8')
print(content)