道招

nodejs爬虫superagent爬取gb2312编码网页中文乱码

如果您发现本文排版有问题,可以先点击下面的链接切换至老版进行查看!!!

nodejs爬虫superagent爬取gb2312编码网页中文乱码

今天爬取某个古老的网站的数据,发现中文乱码。

这个网站从外观上看也够古老的,是偏政企类网页,这种项目一般也都是外包出去的,技术更新速度也是可想而知,里面竟然还是写死的gb2312,还有三层table嵌套。

file

在网上搜了下,有的不少文章说的可能方法是过时,反正我实测没效果。

在npm上搜了下superagent,发现官方就提到了一个charset插件superagent-charsetsuperagent-charset官方github上就给出来示例代码。

const should = require('should')
const request = require('superagent')
require('superagent-charset')(request) // install charset

describe('Basic Test', function() {
  it('it works', function(done) {
    request.get('http://www.sohu.com/')
      .charset('gbk')
      .end((err, res) => {
        res.text.should.match(/搜狐/)
        done(err)
      })
  })
})

果然,搞定了。

const superagent= require('superagent');
require('superagent-charset')(superagent)
const cheerio = require('cheerio');

function getResponse(url, charset = 'utf8') {
  return new Promise((resolve, reject) => {
    superagent.get(url)
      .buffer(true).charset(charset)
      .end((err, res) => {
      if (err) {
        reject(err);
      } else {
        resolve(res);
      }
    });
  });
}
更新时间:
上一篇:了解网页性能指标(getTTFB,getFCP,getLCP,getFID,getCLS)的含义,通过实战理解各指标影响因素下一篇:自定义分词起始规则实现关键词全词高亮项目实战(全语种通吃)

相关文章

ASCII码、GB2312、Big5、UTF-8、unicode编码转换知识

1. ASCII码 我们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符串。每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出 256种状态,这被称为一个字节( 阅读更多…

用ASP实现UTF8、GB2312、二进制、十进制代码、十六进制编码转换

UTF转GB---将UTF8编码文字转换为GB编码文字 function UTF2GB(UTFStr) for Dig=1 to len(UTFStr) '如果UTF8编码文字以%开头则进行 阅读更多…

关注道招网公众帐号
友情链接
消息推送
道招网关注互联网,分享IT资讯,前沿科技、编程技术,是否允许文章更新后推送通知消息。
允许
不用了