有一个爬虫,查询需要发起get请求,这个网站整个都是gbk编码
如果直接发起请求,是不可以的,因为请求参数q首先用utf8编码转化成bytes,然后将bytes进行URLEncode变为字符串。
resp=requests.get("http://haha.com",params={
"q":"你好"
})
print(resp.url)
第一种解决方法:直接使用bytes,而不用字符串,则可以避免将字符串用utf8编码
res = requests.get("http://www.baidu.com", params={
'q': bytes('天下大势为我所控', 'gbk')
})
第二种解决方法,直接拼串
url="http://www.baidu.com/"+requests.utils.quote("天下大势为我所控",encoding='gbk')
requests.get(url)
第三种解决方法,使用PreparedRequest
from requests.models import PreparedRequest
p=PreparedRequest()
s=p.prepare_url("http://www.baidu.com",params={
'q':bytes('天下大势为我所控','gbk')
})
print(p.url)
作为一个纯python的库,requests还是很值得研究的。