【问题标题】:jQuery/cheerio get combined HTML between tagsjQuery/cheerio 获取标签之间的组合 HTML
【发布时间】:2020-03-13 01:30:44
【问题描述】:

我想在我的 Node.js 中用cheerio 拆分一些 HTML 代码,我需要在两个 <hr> 标签之间获取所有标签的组合 HTML。

我想要红圈中所有标签的组合 HTML。我怎样才能做到这一点?

【问题讨论】:

  • 第一步,看看api.jquery.com/nextUntil
  • @Taplar 是的,我已经尝试过了,但是我在获取多个元素时遇到了问题。如果我执行 nextUntil('hr') 然后在其上调用 .html() ,我只会得到第一个元素的 HTML。如果我执行 .each() 或 .map() 我无法获取循环中元素的 HTML...

标签: javascript jquery node.js cheerio


【解决方案1】:

你可以解析2个<hr class="cl-right">之间的HTML内容,不需要任何库,只使用普通的字符串操作。 也许这种解决方法会对您有所帮助:

let content = '<!-- Plugin inserted: [begin] -->'
content+= '<div class="news-single-item">'
content+= '<div style="float: right;"></div>'
content+= '<a href="nachrichten/einzelansicht/article/im-dienst.html" title="Neue Schulsanitate im Dienst">Neue Schulsanitater im Dienst</a>'
content+= '<div class="news-single-rightbox"></div>'
content+= '<h1>Exkursion der Literaturkurse</h1>'
content+= '<hr class="cl-right">'
content+= '<div class="news-single-img"></div>'
content+= '<p></p>'
content+= '<p></p>'
content+= '<p>(Sophie Daubenspeck fOr die Literaturk </p>'
content+= '<p>&nbsp;</p>'
content+= '<p>&nbsp;</p>'
content+= '<hr class="cl-right">'
content+= '<div class="news-single-backlink"></div>'
content+= '</div>'
content+= '<!-- Plugin inserted: [end] -->'
content+= '</div>'

const getContentInside = html => {
    return html.split('<hr class="cl-right">')[1]
}
console.log(getContentInside(content))

如果你从一个 URL 请求内容:

const url = 'http://www.example.com/your.desired.url.here'
const request = require ('request-promise')

const getContentInside = html => {
    return html.split('<hr class="cl-right">')[1]
}

const startParse = async url => {
    const html = await request(url)
    const contentHR = getContentInside(html)
    console.log(contentHR)
}

startParse(url)

【讨论】:

    猜你喜欢
    • 2023-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-14
    • 1970-01-01
    • 2013-10-14
    相关资源
    最近更新 更多