爬虫编码问题
发布于 6 年前 作者 Tianfer 3012 次浏览 来自 问答

用node的http.request爬虫,返回的是一个buffer。 buffer.toJSON() 会返回这样的数据 => { type: ‘Buffer’, data: [ 49, 92, buffer.toString() 会返回这样的数据 c\3l\3o\3j\2r\3o\37\3m\14\22\20\37\12\3a\37\3q\37\1f\3k\3l\3a\3b\21\14\3o\3b\3m\3l\3o\3q\27\3e\37\3m\3q\3b\3o\26\3q\3k\14\12\3a\37\3q\37\1f\3r\3r\3f\3a\21\14\1m\14\12\3e\3o\3b\3c\21\14\3g\37\3s\37\3p\39\3o\3f\3m\3q\1s\1t\14\12\39\3i\37\3p\3p\21\14\3f\3k\3c\3l\3o\3j\26\3q\3k\14\22\m7k\s1n\20\1h\37\22\20\1h\3a\3f\3s\22\20\1h\3a\3f\3s\22",“preuuid”:3,“nextuuid”:5,“uuid”:4,“hasTaked”:1,“showReward”:0} 有大神能解释下这个编码是什么么???该怎么转换

用superagent爬的时候就会提示 socket hang up 的错误

6 回复

前面一段是 hex(十六进制)编码,有可能是 toString 方法解析有问题,你如果想直接获取一个字符串可以先用 JSON.stringify(buffer) 试试

编码不知道可以猜啊 可以试试 https://github.com/aadsm/jschardet 如果是东亚文字而且比较短的话很容易被猜成拉丁文或者希腊文之类的 可以试试我这个修改后只在东亚语言里猜的 https://github.com/jiangzhuo/jschardet-eastasia

@jiangzhuo 我运行之后,内容是这样的\20\3a\3f\3s\12\3a,我将其放到你推荐的jschardet里面,他分析是ascii,怎么转换啊

@OneNewLife 得到的数据里面是这样的\20\3a\3f\3s\12\3a(很长的一段,后面还有很多)的一些字符串,怎么转换呢

@Tianfer 本来你 stringify 之后直接 toString 就可以了,如果编码不支持的话,toString() 只能返回 unicode 编码了(你应该是在做进出口的项目吧。。。)你需要找对应语言的转换插件了

你直接给我们贴你爬的那个网址 我们访问一下看看是什么编码告诉你就好了。。。。。何必这么麻烦。

回到顶部