猿问

使用 gocolly 抓取时如何在 html 表格单元格中保留换行符

当我提取单元格的内容时,我试图保留<td>表格单元格中的格式。

如果 中有两行文本(例如地址),代码可能如下所示: <td>address line1 <br>1 address line2</td>

当 colly 提取这个时,我得到以下信息:address line1address line2

没有空格或换行符,因为所有 html 都已从文本中删除。

我该如何解决/解决这个问题,以便我从<td>


HUH函数
浏览 121回答 2
2回答

一只斗牛犬

gocollygoquery在引擎盖下使用。您可以调用所有Selection方法,包括Html()。func (*Selection) HTMLfunc (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)    })}

哈士奇WWW

据我所知,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/>并获得您想要的结果。但我也是新手,所以也许有更好的方法来做到这一点。
随时随地看视频慕课网APP

相关分类

Go
我要回答