2 回答

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超2個(gè)贊
gocolly
goquery
在引擎蓋下使用。您可以調(diào)用所有Selection方法,包括Html()。
func (*Selection) HTML
func (s *Selection) Html() (ret string, e error)
Html 獲取匹配元素集中第一個(gè)元素的 HTML 內(nèi)容。它包括文本和注釋節(jié)點(diǎn)。
這是獲取 html 內(nèi)容的方法:
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貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超6個(gè)贊
據(jù)我所知,gocolly 不支持這種格式,但您基本上可以通過(guò)使用htmlquery(gocolly 在內(nèi)部使用它)包的OutputHTML方法來(lái)執(zhí)行如下操作
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)
結(jié)果變量的輸出現(xiàn)在如下所示:
?AddressLine 1
? ?<br/>
?AddresLine 2
您現(xiàn)在可以通過(guò)標(biāo)記解析結(jié)果<br/>并獲得您想要的結(jié)果。
但我也是新手,所以也許有更好的方法來(lái)做到這一點(diǎn)。
- 2 回答
- 0 關(guān)注
- 175 瀏覽
添加回答
舉報(bào)