gpt4 book ai didi

html - 使用 golang 解析损坏的 HTML

转载 作者:IT老高 更新时间:2023-10-28 13:09:48 29 4
gpt4 key购买 nike

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

我尝试将 XPath 与 launchpad.net/xmlpath 一起使用,但它无法解析 HTML 文件,这该死的错误。

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

最佳答案

好像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)
}
}

关于html - 使用 golang 解析损坏的 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24101721/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com