ajax 被京东反爬虫 怎么解决中文乱码?
axios 访问京东某个商品获取商品评价信息
相关代码
const axios = require("axios");
(async () => {
const productId = "100002928171";
await axios({
method: "GET",
url: `https://sclub.jd.com/comment/productPageComments.action`,
params: {
productId,
score: 0,
sortType: 5,
page: 0,
pageSize: 10, // 某一页
isShadowSku: 0,
fold: 1
},
headers: {
DNT: 1,
Referer: `https://item.jd.com/${productId}.html`,
"sec-ch-ua": "Google Chrome 74",
"Sec-Fetch-Dest": "script",
"Sec-Fetch-Mode": "no-cors",
"Sec-Fetch-Site": "same-site",
"Sec-Fetch-User": "?F",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36"
}
}).then(res => console.log(res.data));
})();
你期待的结果是什么?实际看到的错误信息又是什么?
返回数据是中文乱码
我一开始以为axios解析问题然后我用postman模拟了一次访问,得到了中文字体
后来为了验证不是axios的问题,我把postman请求的数据下载下来
结果打开还是乱码
所以现在问题很明显 我应该怎么转码? 还是说axios数据被压缩了 ?
打开postman下载的数据然后用vscode试了编码重新打开 全是乱码。。。
补充。。。用chardet.detect(data.data.comments)
返回字符集 UTF-32BE
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
请求数据,二进制数据,然后用iconv转码为gb2312就可以了。。。。 此贴结了
如果是被压缩就全部被压缩了,而不会只有中文压缩英文却没事。
我用 PHP 测了一下,这个网页编码是 GBK 编码,按 UTF-8 编码处理就会出现了中文乱码其他正常的情况。
转码就行。PHP GBK 转 UTF-8 的代码是:
我不熟悉 axios ,网上搜一下 axios gbk 看到是有很多文章说到转码问题的,但我这里没有 Nodejs 环境,就不帮你测 axios 的转码代码了,你自己找找吧。