utf8-nodejs抓取正文时乱码和无用标签

问题描述

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

utf8-nodejs抓取正文时乱码和无用标签的相关文章

XMLHTTP抓取数据时乱码问题解决

xml|解决|数据|问题 内码问题.用这段代码的吧,我已经改得很精简了.'使用XMLHTTP抓取地址并进次内容处理Function GetBody(Url) Dim objXMLOn Error Resume NextSet objXML = CreateObject("Microsoft.XMLHTTP") With objXML .Open "Get", Url, False, "", "" .Send GetBody =

utf8-使用nodejs抓取时,出现问题(详看正文)

问题描述 使用nodejs抓取时,出现问题(详看正文) newsList和newsDetail单独拿出来调试没有问题.但如下放在一起时,提示 body is not defined 经多次调试,错误节点应该是出现在readNewsDetail()中 // 转换 gbk 编码的网页内容 body2 = iconv.decode(body, 'gbk'); // 根据网页内容创建DOM操作对象 var $ = cheerio.load(body2); 这两句.因为直接 var $ = cheerio

Node.js抓取中文网页乱码问题和解决方法_node.js

Node.js 抓取非 utf-8 的中文网页时会出现乱码问题,比如网易的首页编码是 gb2312,抓取时会出现乱码 复制代码 代码如下: var request = require('request')  var url = 'http://www.163.com' request(url, function (err, res, body) {      console.log(body) }) 可以使用 iconv-lite 来解决 安装 复制代码 代码如下: npm install ic

PHP中使用file_get_contents抓取网页中文乱码问题解决方法_php技巧

本文实例讲述了PHP中使用file_get_contents抓取网页中文乱码问题解决方法.分享给大家供大家参考.具体方法如下: file_get_contents函数本来就是一个非常优秀的php自带本地与远程文件操作函数,它可以让我们不花吹挥之力把远程数据直接下载,但我在使用它读取网页时会碰到有些页面是乱码了,这里就来给各位总结具体的解决办法. 根据网上有朋友介绍说原因可能是服务器开了GZIP压缩,下面是用firebug查看我的网站的头信息,Gzip是开了的,请求头信息原始头信息,代码如下: 复

Nodejs抓取html页面内容(推荐)_node.js

废话不多说,直接给大家贴node.js抓取html页面内容的核心代码了. 具体代码如下所示: var http = require("http"); var iconv = require('iconv-lite'); var option = { hostname: "stockdata.stock.hexun.com", path: "/gszl/s601398.shtml" }; var req = http.request(option,

phantomjs 抓取html页面中所有h3标签

问题描述 phantomjs 抓取html页面中所有h3标签 var page = require('webpage').create();phantom.outputEncoding='gbk';page.open('http://baidu.com/s?wd=javascript'function(status) { console.log(page.title); page.evaluate(function(){ var len=document.getElementsByTagName

html-正则表达式抓取一个HTML里面的INPUT标签

问题描述 正则表达式抓取一个HTML里面的INPUT标签 # <input type="hidden" name="__VIEWSTATEGENERATOR" id="__VIEWSTATEGENERATOR" value="6321F451" /> <div id="divTitle" class="Header"> <div class="Wr

php file_get_contents抓取Gzip网页乱码的三种解决方法_php实例

把抓取到的内容转下编码即可($content=iconv("GBK", "UTF-8//IGNORE", $content);),我们这里讨论的是如何抓取开了Gzip的页面.怎么判断呢?获取的头部当中有Content-Encoding: gzip说明内容是GZIP压缩的.用FireBug看一下就知道页面开了gzip没有.下面是用firebug查看我的博客的头信息,Gzip是开了的. 复制代码 代码如下: 请求头信息原始头信息Accept text/html,appl

python抓取网页时字符集转换问题处理方案分享_python

问题提出:     有时候我们采集网页,处理完毕后将字符串保存到文件或者写入数据库,这时候需要制定字符串的编码,如果采集网页的编码是gb2312,而我们的数据库是utf-8的,这样不做任何处理直接插入数据库可能会乱码(没测试过,不知道数据库会不会自动转码),我们需要手动将gb2312转换成utf-8. 首先我们知道,python里的字符默认是ascii码,英文当然没问题啦,碰到中文的时候立马给跪. 不知道你还记不记得,python里打印中文汉字的时候需要在字符串前面加 u: print u"来搞