html之如何使用encoding/xml忽略Go中的html属性
lvdongjie
阅读:118
2025-06-02 22:19:02
评论:0
我正在尝试从任何网站的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))
好消息是它不需要任何
Marshal和
Unmarshal,它非常灵活。
声明
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。



