node.js - 使用 superagent 抓取 UTF-8网站乱码
问题描述
我使用 superagent + cheerio 去抓取*东的商品 但是返回的中文乱码 响应头如下 是经过 gzip压缩的 但是按道理 superagent好像会默认解压

*东商品地址https://item.jd.com/5025518.html
我取了商品标题 结果如下
核心代码如下:
var url = ’https://list.jd.com/list.html?cat=670,671,672’ //京东电脑var totalData = [] // 存储总数据superagent.get(url).end(function (err, res) { if (err) {return console.error(err) } var topicUrls = []; // 页面里面的所有url var $ = cheerio.load(res.text) // 拿到页面 $(’#plist .gl-item’).each(function (i, e) {$e = $(e)var href = ’https:’ + $e.find(’.p-img >a’).attr(’href’) // 拿到所有urltopicUrls.push(href) }) var ep = new eventproxy();// //异步调用结束后,执行某些操作 ep.after(’topic_html’, topicUrls.length, function (topics) { //接收res.texttopics = topics.map(function (topicHtml) { var $ = cheerio.load(topicHtml, {decodeEntities: false}); return ({title: $(’.sku-name’).text().trim() });});totalData.push(topics)console.log(totalData); }) topicUrls.forEach(function (e) {superagent.get(e).end(function (err, res) { ep.emit(’topic_html’, res.text);}) })})
问题解答
回答1:这并不是乱码啊,如果是乱码,所有的都乱了,应该是你编码的问题。
回答2:我直接用postman去请求了你那个地址,并没有出现你这种情况,所以我判断是你IDE或者文本编辑器的问题,将格式设为 utf-8 。
相关文章:
1. vue.js - android环境下在vue中引入vux.js 报错。2. 无法为JSP编译类:无法解析类型java.util.Map $ Entry。从所需的.class文件间接引用它3. 第6行的$_GET[’F’]没有定义啊?求问一下是什么意思?4. tp5.0|php8.0 在window系统上写定时任务,执行报错5. javascript - js,有几行代码不太明白?6. java - springboot 修改默认静态资源文件读取路径7. 用python3的smtplib库发邮件一直返回无法发送邮件提示,是什么原因?8. javascript - 怎样优化网页打开速度呢?9. php - 问个类型转化的问题,float类型转int,觉得可能会出问题,但结果并没有?10. javascript - 一排三个框,各个框的间距是15px,距离外面的白框间距也是15px,这个css怎么写?

网公网安备