解决Python发送Http请求时,中文乱码的问题
解决方法:
先encode再quote。
原理:
msg.encode('utf-8')是解决中文乱码问题。
quote():假如URL的name或者value值中有『&』、『%』或者『=』等符号,就会有问题。所以URL中的参数字符串也需要把『&=』等符号进行编码,quote()就是对参数字符串中的『&=%』等符号进行编码。
例子:
#-*-coding:UTF-8-*- #python2.7 fromurllibimportquote importrequests defhttpGet(sUrl): header={} try: response=requests.get(sUrl,headers=header) sText=response.text returnsText exceptBaseException: printBaseException defdemo(msg): sEncodeMsg=quote(msg.encode('utf-8')) url='http://www.youdao.com/w/eng/'+sEncodeMsg printhttpGet(url) demo(u'90%的数据')
补充知识:python用Requestpayload翻页获取不同的返回值
我就废话不多说啦,直接看代码吧!
headers={'Accept':'*/*', 'Accept-Encoding':'gzip,deflate', 'Accept-Language':'zh-CN,zh;q=0.9', 'Ajax-method':'GetPageJYXTXXFB', 'Connection':'keep-alive', 'Content-Length':'129', 'Content-Type':'text/plain;charset=UTF-8', 'Cookie':'ASP.NET_SessionId=vdl5ooxkjkazwszgvj5woewh', 'Host':'ggzy.yibin.gov.cn', 'Origin':'http://ggzy.yibin.gov.cn', 'Referer':'http://ggzy.yibin.gov.cn/Jyweb/ZhaoBaoGongGaoList.aspx?Type=%e5%bb%ba%e8%ae%be%e5%b7%a5%e7%a8%8b&SubType=260', 'User-Agent':'Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/67.0.3396.62Safari/537.36', }#模仿浏览器 payload=[i*15,15,"FBSJDESC","XMMC","","XXLB={0}ANDXTType={1}ANDZBFS!=2","[{\"pvalue\":\"260\"},{\"pvalue\":\"1\"}]"]#Requestpayload里面的信息 rsp=requests.post(url1,data=json.dumps(payload),headers=headers)#用Requestpayload里面的信息发送post请求 data_a=rsp.content defparse_js(expr): obj=eval(expr,type('Dummy',(dict,),dict(__getitem__=lambdas,n:n))()) returnobj list_a=parse_js(data_a)#把json字典({KEY:'value'})转换为python的字典({'key':'value'})
以上这篇解决Python发送Http请求时,中文乱码的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。