乱码问题:
首先我们要知道网站使用的是什么编码,我们打开该网站的控制台,点击F12浏览器快捷键打开,输入document.charset回车即可查看该网站的编码
- 问题爬取的数据样本为:
´å¯¹æ��ç¨�ï¼�å��è��æ��å��ï¼�å�¨çº¿å®�ä¾�ä¿�æ��修订ï¼�ä½�æ�¯æ��们ä¸�è�½
解决方案:通过编码、解码的方式content.encode(‘raw_unicode_escape’).decode()
解决方案:接指定res.encoding,指定内容和网页设置的编码格式一致即可;
解决方案:通过res.apparent_encoding指定 - 问题:爬取的数据展示成\xb7\xaf\xe5\xb8\xa6\xe9\xa3\x8
解决方案:使用str(content, ‘utf8’)的方法即可解决
或者可以使用它的方法
Html=html.text.encode('iso-8859-1').decode('gbk')#对编码格式为gbk方式读取
请求params的编码问题
我们在使用requests进行传入params时遇到的编码问题如下方代码
par = {'isPagination': 'true', 'pageHelp.pageSize': '25', 'pageHelp.pageNo': 1, 'pageHelp.beginPage': 1,
'pageHelp.cacheSize': '1', 'pageHelp.endPage': 1, 'sqlId': 'BS_KCB_GGLL', 'siteId': '28',
'channelId': '10007%2C10008%2C10009%2C10010', 'type': '', 'stockcode': '', 'extTeacher': '', 'extWTFL': '',
'createTime': '', 'createTimeEnd': '', 'order': 'createTime%7Cdesc%2Cstockcode%7Casc'}
par2 = {'isPagination': 'true', 'pageHelp.pageSize': '25', 'pageHelp.pageNo': 1, 'pageHelp.beginPage': 1,
'pageHelp.cacheSize': '1', 'pageHelp.endPage': 1, 'sqlId': 'BS_KCB_GGLL', 'siteId': '28',
'channelId': '10007,10008,10009,10010', 'type': '', 'stockcode': '', 'extTeacher': '', 'extWTFL': '',
'createTime': '', 'createTimeEnd': '', 'order': 'createTime|desc,stockcode|asc'}
headers = {'Host': 'query.sse.com.cn', 'Pragma': 'no-cache', 'Referer': 'http://www.sse.com.cn/',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36 Edg/107.0.1418.24'}
url='http://localhost:8080/gethttpbody/hello'
import requests
res=requests.get(url=url,params=par,headers=headers)
print(res.text)
发送请求par时请求的方式是错误的应为在params=par时par为对象,对象中的字符串值不会进行url请求参数转码,导致发送给服务器后得到的是createTime%7Cdesc%2Cstockcode%7Casc,(其中%7就是|的url编码)如果后台的逻辑是那|进行拆分字符串,处理该就行识别到%7就会出错;
- 解决方案:正确用法是使用par2进行请求;
- 解决方案:不适用params传参而是使用url?的方式传参如:http://localhost:8080/do?jsonCallBack=jsonpCallback24473776&isPagination=true&pageHelp.pageSize=25&pageHelp.pageNo=3&pageHelp.beginPage=3&pageHelp.cacheSize=1&pageHelp.endPage=3&sqlId=BS_KCB_GGLL&siteId=28&channelId=10743%2C10744%2C10012&type=&stockcode=&extWTFL=&createTime=&createTimeEnd=&order=createTime%7Cdesc%2Cstockcode%7Casc&_=1667477355699