-1

我希望提取elementB,然后在元素Cand之前停止D- 即不提取.text内容elementCand elementD。但是,我只知道如何提取整个 div 文本,使用Contents().Notto ignore elementC,但elementD仍然被捕获。

这是我目前正在使用的代码:

语言:

capturedText := s.Find("div").Contents().Not(".label").Text()

忽略elementC,但不忽略 ,elementD它没有外部标签。

HTML:

<li><span><h2>elementA</h2></span><div>elementB<br><span class="label">elementC</span>elementD</div></li>

如何仅捕获elementBof <div>,而不捕获elementCand elementD

编辑:

我试过像这样关闭 div 标签:

s.Find(".label").BeforeHtml(`</div>`)

并尝试过:

s.Find(".label").BeforeHtml(`</div><div>`)

并访问第一个div,忽略div现在应该具有的第二个elementD

jp, _ := s.Find("div").First().Html()

但是,这是行不通的。似乎它</div>不能是一个打开的标签 - 它需要<div>...</div>正确插入。但这不是我需要的,我只需要</div>或正确</div><div>关闭第一个div

解决此问题的适当方法是什么?

4

1 回答 1

0

由于我无法使用“损坏”节点编辑 HTML,因此我选择了这个:

    s.Find(".label").BeforeHtml(`|_SEPARATOR_|`) // Insert text separator into Html
    preCleanNode := s.Find("div").Contents().Not(".label").Text() //Get Html as Text
    cleanNode := strings.Split(preCleanNode, `|_SEPARATOR_|`) // Split text based on Text Separator
    outputString := cleanNode[0] // Output our wanted text
于 2017-02-10T20:36:13.050 回答