如何从我抓取的 HTML 页面解析 JavaScript object?

How to parse a JavaScript object from a HTML page I crawl?

我正在尝试为食物食谱页面编制索引,但实际食谱存储为页面中 JavaScript 中的 object。

一个例子URL:http://www.dagbladet.no/mat/oppskrift/bakt-potet-med-romme-og-blamuggostdressing

如果我在浏览器中打开开发者工具并输入:

console.dir(food.recipeItem.title)

我取回了标题:

"Bakt potet med rømme- og blåmuggostdressing"

一切都很好,花花公子,正是我需要的。但是我怎样才能得到那个脚本并在 Node.js 应用程序中解析它呢? Cheerio 可能会帮我找到剧本,但不会做更多的事情?或者也许它会?我不确定该怎么做,也不知道最 computation-effective 的答案是什么。或者最结实。

非常简单,您只需解析 返回的HTML。 如果您检查返回的 HTML(查看源代码:http://www.dagbladet.no/mat/oppskrift/bakt-potet-med-romme-og-blamuggostdressing),您会发现一个脚本标签,其中包含您在多个 javascript[=32= 中需要的所有信息] 变量。这些变量包含 JSON 数据。由于脚本直接硬编码到 HTML 文档中,而不是通过 XHR 或类似方法获得,因此解析 HTML 是唯一的方法。

所以基本上你有这 3 个步骤:

1. 发送 HTTP GET 请求到 the link above

2. 解析 HTML 字符串以使用某些库提取 script 标记(检查 this link 来决定使用哪个库)。

3. 解析 javascript 字符串(从步骤 2 中提取的脚本)以提取 JSON 数据。检查 UglifyJS Node.js

的库