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

如何使用encoding/xml忽略Go中的html属性?,html,xml,go,web-scraping,Html,Xml,Go,Web Scraping,我试图从任何网站的html中刮取正文,如果html标记只是,它就可以工作,但是如果它包含任何属性(例如:),那么它就不会发现存在html标记的事实 有没有办法绕过这个问题,让它忽略任何属性,并看到仍然有一个标记 注意:我之所以使用单独的结构,是为了以后的可扩展性,因为我改进并了解了更多关于Go和这些库的工作原理 以下是结构: 键入html结构{ Body`xml:“Body”` } 类型体结构{ 内容字符串'xml:,innerxml'` } 这是打印所有内容的方法 //ShowBody将主体

我试图从任何网站的html中刮取正文,如果html标记只是
,它就可以工作,但是如果它包含任何属性(例如:
),那么它就不会发现存在html标记的事实

有没有办法绕过这个问题,让它忽略任何属性,并看到仍然有一个标记

注意:我之所以使用单独的结构,是为了以后的可扩展性,因为我改进并了解了更多关于Go和这些库的工作原理

以下是结构:

键入html结构{
Body`xml:“Body”`
}
类型体结构{
内容字符串'xml:,innerxml'`
}
这是打印所有内容的方法

//ShowBody将主体打印到控制台
func ShowBody(url字符串){
html:=html{}
Unmarshal(GetHTTP(url)和html)
fmt.Println(html.Body.Content)
}
GetHTTP函数使用ioutil并从http调用读取页面。如果需要,代码的其余部分在这里:

应为:将整个车身打印到控制台中


实际:不打印任何内容,因为由于lang属性,它看不到
,如果要从HTML文件中提取数据,可以采取以下步骤来解析和提取数据:

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

好在它不需要任何
封送
解组
,它非常灵活。

为什么要用xml解析器解析HTML?使用这个包。你在粘贴库中的一些代码忽略了错误,这在围棋中是不好的做法。然后,其他一些代码正确地检查错误,如果有错误,它将打印它,但不退出它,而是继续处理主值,在大多数情况下,主值是“无效的”,在这个特定的实例中,它将是
nil
,这在Go中也是不好的做法。当您返回错误时,不要像没有返回错误一样继续,那样会破坏错误的全部目的。如Flimzy所述,使用x/net/html包重写整个过程。现在一切都好了,谢谢