为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
HUH函数 2023-03-29 17:22:13
当我提取单元格的内容时,我试图保留<td>表格单元格中的格式。如果 中有两行文本(例如地址),代码可能如下所示: <td>address line1 <br>1 address line2</td>当 colly 提取这个时,我得到以下信息:address line1address line2没有空格或换行符,因为所有 html 都已从文本中删除。我该如何解决/解决这个问题,以便我从<td>
查看完整描述

2 回答

?
一只斗牛犬

TA贡献1784条经验 获得超2个赞

gocollygoquery在引擎盖下使用。您可以调用所有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)

    })

}


查看完整回答
反对 回复 2023-03-29
?
哈士奇WWW

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/>并获得您想要的结果。


但我也是新手,所以也许有更好的方法来做到这一点。


查看完整回答
反对 回复 2023-03-29
  • 2 回答
  • 0 关注
  • 104 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信