使用requests库发起gbk编码的get请求

有一个爬虫,查询需要发起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还是很值得研究的。

转载于:https://www.cnblogs.com/weiyinfu/p/8088085.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值