【问题标题】:Node: read and parse HTML节点:读取和解析 HTML
【发布时间】:2021-11-26 22:05:51
【问题描述】:

哟! 假设我有一些这样的 index.html:

<span>Hello</span>
<span>mr.Goover</span>

我还有一个 app.js,我需要在其中读取 index.html 并将这 2 个 html 行中的每一行存储在一个对象中(作为字符串!):

const html = {
    greeting: '<span>Hello</span>',
    name: '<span>mr.Goover</span>'
}

问题: 我可以读取 index.html 并将其中的全部内容存储为字符串:

const content = fs.readFileSync('/index.html').toString()

但我需要将这两行分开并将它们放在正确的 objext 文件中。 我可以不使用 html 解析 npm 包吗?

【问题讨论】:

  • 如果这是项目的全部范围 - 您将只有两组简单格式化的 &lt;span&gt; 标签,那么您可以使用任意数量的简化方法来解析它。您可以使用正则表达式,也可以使用.indexOf() 来查找不同的部分。如果内容实际上可以是具有所有分类属性和其他标签的真实 HTML,那么看在上帝的份上,请使用真实的 HTML 解析器。
  • 而且,由于 HTML 根本不包含关于什么是 greeting 和什么是 name 或其他属性的信息,因此您也必须提供该信息。

标签: html node.js html-parsing


【解决方案1】:

手动?当然。

const please_dont_do_this = content.split('\n');

const html = {
    greeting: please_dont_do_this[0],
    name: please_dont_do_this[1],
};

【讨论】:

    【解决方案2】:

    这个问题已经回答here

    const fs = require('fs');
    
    require.extensions['.html'] = (module, filename) => {
      module.exports = fs.readFileSync(filename, 'utf8');
    };
    
    const content = require('./index.html');
    
    const [greeting, name] = content.split('\n');
    
    const html = {
        greeting,
        name,
    };
    

    【讨论】:

    • 伙计,我可以将文件读取为字符串。问题是正确拆分字符串。
    • @Ishimura_Hideo 你可以试试这个:content.split('\n');。答案已被编辑。
    猜你喜欢
    • 2014-11-15
    • 1970-01-01
    • 1970-01-01
    • 2018-04-11
    • 2017-05-04
    • 1970-01-01
    • 2012-07-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多