问题描述
- nodejs抓取正文时乱码和无用标签
-
正在学习用nodejs抓取新闻,但是在抓取正文这里卡住了。
输出时,输出了一堆乱码+各种标签……已解决乱码问题。求解如何去掉里面的无用标签?
检查发现编码
<meta charset="gb2312" />
求问怎么去掉里面的各种标签并且转换成UTF-8呢?
使用iconv-lite库来转码
request({
url: 'http://news.163.com/15/0405/09/AME6CKER0001124J.html',
// 重点,设置 request 抓取网页时不要对接收到的数据做任何转换
encoding: null
}, function (err, res, body) {
if (err) throw err;// 转换 gbk 编码的网页内容
body = iconv.decode(body, 'gbk');// 根据网页内容创建DOM操作对象
var $ = cheerio.load(body);nodejs库有:request、cheerio
js代码:
// 读取新闻页面 request('http://news.163.com/15/0405/09/AME6CKER0001124J.html', function (err, res) { if (err) return callback(err); // 根据网页内容创建DOM操作对象 var $ = cheerio.load(res.body.toString()); // 获取正文内容 var content = $('.end-text').html().trim(); // 输出结果 console.log({content: content});
新闻正文html:http://news.163.com/15/0405/09/AME6CKER0001124J.html
希望各位朋友能帮我解解惑,谢谢!
解决方案
用xslt或者正则表达式
解决方案二:
http://blog.csdn.net/guoguo1980/article/details/1221896
http://www.blogjava.net/haogj/archive/2006/03/20/36437.html
时间: 2024-12-01 17:07:23