2 回答
TA贡献1784条经验 获得超2个赞
gocolly
goquery
在引擎盖下使用。您可以调用所有Selection方法,包括Html()。
func (*Selection) HTML
func (s *Selection) Html() (ret string, e error)
Html 获取匹配元素集中第一个元素的 HTML 内容。它包括文本和注释节点。
这是获取 html 内容的方法:
c.OnHTML("tr", func(e *colly.HTMLElement) {
// You can find the elem
h, _ := e.DOM.Find("td").Html()
fmt.Printf("=> %s \n", h)
// ...or you can loop thru all of them
elem.DOM.Each(func(_ int, s *goquery.Selection) {
h, _ := s.Html()
fmt.Printf("=> %s \n", h)
})
}
TA贡献1799条经验 获得超6个赞
据我所知,gocolly 不支持这种格式,但您基本上可以通过使用htmlquery(gocolly 在内部使用它)包的OutputHTML方法来执行如下操作
const htmlPage = `
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<title>Your page title here</title>
</head>
<body>
<p>
AddressLine 1
<br>
AddresLine 2
</p>
</body>
</html>
`
doc, _ := htmlquery.Parse(strings.NewReader(htmlPage))
xmlNode := htmlquery.FindOne(doc, "//p")
result := htmlquery.OutputHTML(xmlNode, false)
结果变量的输出现在如下所示:
AddressLine 1
<br/>
AddresLine 2
您现在可以通过标记解析结果<br/>并获得您想要的结果。
但我也是新手,所以也许有更好的方法来做到这一点。
- 2 回答
- 0 关注
- 120 浏览
添加回答
举报