【问题标题】:Anyway I can get the html body in node.js无论如何,我可以在 node.js 中获取 html 正文
【发布时间】:2014-01-12 08:12:52
【问题描述】:

我尝试向 Apache 服务器发送请求并使用返回的正文。

遵循nodejs的手册 http://nodejs.org/api/https.html#https_https_request_options_callback

以及相关的 SO 内容 How to make external HTTP requests with Node.js

我的来源是

callback = function(response) {
  body='';
  console.log('HEADERS: ' + JSON.stringify(response.headers));
  response.on('data', function (chunk) {
    body+= chunk;
  }); 

  response.on('end', function () {
    console.log(body);
  }); 
}

我的问题是,这里的body会包含所有的HTML header标签,比如<!DOCTYPE html>...等,这些是JSON对象无法解析的。因为我在 HTML 正文中的所有数据都是 JSOn,所以我只想获取 HTML 正文。有没有办法实现这个目标?提前致谢。

【问题讨论】:

  • 我很困惑。返回的内容已经只是 HTML,对吧?
  • 响应正文不是 HTML 页面正文。您必须抓取页面以提取 内容,然后 JSON.parse 它。
  • node.js中有一些用于html查询的包:cherio或jquery。 github.com/MatthewMueller/cheerio
  • @thefourtheye 你是对的,但我正在尝试获取 HTML 的“正文”
  • @vkurchatkin 对不起,这是一个错误。

标签: javascript html json node.js


【解决方案1】:

这里我没有给出完整的代码。

  1. 您可以使用 htmlparser2 等模块从 HTML 正文 (Online demo for the same) 中提取数据。

  2. 然后您可以使用JSON.parse 将提取的字符串解析为JSON 对象。

【讨论】:

  • 谢谢!我也会试试这个。
  • @StevenR 这是要走的路。可能有一些基于正则表达式的解决方案,但它们并不可靠。如果你想从 HTML 中提取数据,你只需要解析它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-17
  • 2023-03-12
  • 1970-01-01
  • 1970-01-01
  • 2019-08-10
  • 2011-10-23
相关资源
最近更新 更多