使用 golang 解析损坏的 HTML

2024-02-13

我需要在 HTML 字符串中查找元素。不幸的是,HTML 几乎被破坏了(例如,没有打开对的关闭标签)。

我尝试使用 XPathlaunchpad.net/xmlpath但它无法解析 HTML 文件,真是太糟糕了。

如何使用 golang 找到损坏的 HTML 中的元素?我更喜欢使用 XPath,但如果我可以使用它来查找具有特定 id 或类的标签,我也愿意接受其他解决方案。


它似乎net/html https://godoc.org/code.google.com/p/go.net/html完成工作。

这就是我现在正在做的事情:

package main

import (
    "strings"
    "golang.org/x/net/html"
    "log"
    "bytes"
    "gopkg.in/xmlpath.v2"
)

func main() {
    brokenHtml := `<!DOCTYPE html><html><body><h1 id="someid">My First Heading</h1><p>paragraph</body></html>`

    reader := strings.NewReader(brokenHtml)
    root, err := html.Parse(reader)

    if err != nil {
        log.Fatal(err)
    }

    var b bytes.Buffer
    html.Render(&b, root)
    fixedHtml := b.String()

    reader = strings.NewReader(fixedHtml)
    xmlroot, xmlerr := xmlpath.ParseHTML(reader)

    if xmlerr != nil {
        log.Fatal(xmlerr)
    }

    var xpath string
    xpath = `//h1[@id='someid']`
    path := xmlpath.MustCompile(xpath)
    if value, ok := path.String(xmlroot); ok {
        log.Println("Found:", value)
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 golang 解析损坏的 HTML 的相关文章

随机推荐