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, "http://p")
result := htmlquery.OutputHTML(xmlNode, false)
結果變量的輸出現在如下所示:
?AddressLine 1
? ?<br/>
?AddresLine 2
您現在可以通過標記解析結果<br/>并獲得您想要的結果。
但我也是新手,所以也許有更好的方法來做到這一點。
- 2 回答
- 0 關注
- 166 瀏覽
添加回答
舉報