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

标签 html xml go web-scraping

我正在尝试从任何网站的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/

相关文章:

javascript - 滚动方向和滚动百分比为真时的类滚动 (jQuery)

javascript - html : navigation style change on hover

xml - 哪种XQuery表达式将返回找到的每个节点的XPath?

java - 从具有相似属性名称的 XSD 生成 JAXB 类

go - git credential.helper而不是.netrc以获取依赖关系

postgresql - golang ORM 表名

html - ionic 3 自动调整网格布局

javascript - Html & JS 在点击时将图像旋转 90 度

xml - '不允许序列化 'SimpleXMLElement' 在 session xml 值中插入错误

json - 如何简化获取结果表单json