【问题标题】:How parse fetch text from html tags in nodejs?如何从nodejs中的html标签解析获取文本?
【发布时间】:2020-03-27 17:04:08
【问题描述】:

我在 nodejs 中有一个 html 作为文本,如下所示:

var htmlText = `<div class="X7NTVe">
        <a class="tHmfQe" href="/link1">
            <div class="am3QBf">
                <div>
                    <span>
                        <div class="BNeawe deIvCb AP7Wnd">
                            <span dir="rtl">My First Text</span>
                        </div>
                    </span>
                </div>
            </div>
        </a>
        <div class="HBTM6d XS7yGd">
            <a href="/anotherLink1">
                <div class="BNeawe mAdjQc uEec3 AP7Wnd">&gt;</div>
            </a>
        </div>
    </div>
    <div class="x54gtf"></div>
    <div class="X7NTVe">
        <a class="tHmfQe" href="/link2">
            <div class="am3QBf">
                <div>
                    <span>
                        <div class="BNeawe deIvCb AP7Wnd">
                            <span dir="rtl">My Second Text</span>
                        </div>
                    </span>
                </div>
            </div>
        </a>
        <div class="HBTM6d XS7yGd">
            <a href="/anotherLink2">
                <div class="BNeawe mAdjQc uEec3 AP7Wnd">&gt;</div>
            </a>
        </div>
    </div>
    <div class="x54gtf"></div>`

现在我想从它的数组中获取文本。在 abow 示例中,它必须返回 My First TextMy Second Text 。我该怎么做?

注意:我想在 javascript 中的 nodejs note 中做。

【问题讨论】:

    标签: javascript node.js regex html-parsing


    【解决方案1】:

    方法#1

    用正则表达式/&lt;[^&gt;]*&gt;/g替换所有标签。

    方法#2

    jsdom解析html,通过js文档api访问html节点。

    方法#2 更加灵活。

    【讨论】:

    • 对于方法#1我有另一个文本,对于方法#2怎么办?
    • 你可以通过jsdom包创建一个虚拟文档环境,看看jsdom docs
    【解决方案2】:

    和cheerio:

    let $ = cheerio.load(html)
    let strings = $('div[class="BNeawe deIvCb AP7Wnd"]>span[dir]')
                  .get().map(span => $(span).text())
    

    【讨论】:

    • 你能从&lt;div class="BNeawe deIvCb AP7Wnd"&gt;更改选择元素吗?
    • 这只是 CSS。所以:div[class="BNeawe deIvCb AP7Wnd"]
    猜你喜欢
    • 2014-11-03
    • 2011-07-31
    • 1970-01-01
    • 1970-01-01
    • 2017-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多