gpt4 book ai didi

html - 如何使用encoding/xml忽略Go中的html属性?

转载 作者:行者123 更新时间:2023-12-01 22:28:17 28 4
gpt4 key购买 nike

我正在尝试从任何网站的html抓取正文,并且如果html标签只是<html>,则它可以工作,但是如果它包含任何属性(例如:<html lang="en">),那么它不会发现有html标签的事实。

我有什么办法可以解决这个问题,并使其忽略任何属性,并看到那里仍然有一个标签?

注意:我之所以使用单独的结构是为了以后可扩展性,因为我对此进行了改进并进一步了解了Go和这些库的工作方式

这是结构:

type html struct {
Body body `xml:"body"`
}

type body struct {
Content string `xml:",innerxml"`
}

这是打印所有内容的方法

//ShowBody prints the body to console
func ShowBody(url string) {
html := html{}

xml.Unmarshal(GetHTTP(url), &html)
fmt.Println(html.Body.Content)
}

GetHTTP函数使用ioutil并从http调用读取页面。如果需要,其余代码在这里:
https://pastebin.com/rbxDLH2e

预期:将整个正文打印到控制台中

实际的 :不打印任何内容,因为由于lang属性而看不到 <html>

最佳答案

如果要从HTML文件中提取数据,则可以使用htmlquery来解析和提取数据,如下所示:

doc,err:=htmlquery.LoadURL('http://www.example.com')
body:=htmlquery.FindOne(doc,"//body")
fmt.Println(htmlquery.OutputHTML(body,true))

好消息是它不需要任何 MarshalUnmarshal,它非常灵活。

关于html - 如何使用encoding/xml忽略Go中的html属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58427427/

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