我正在制作 Web 应用程序,它通过使用 goquery 抓取来检索嵌套标签中的文本。
我想以文本形式显示包含文本的文本和标签,例如“<'h1'>Hello World!<'/h1'>”。
item - 它是 goquery.Selection - item.Text() 和节点,_ := item.Html(), fmt.Sprintf("%s",node) 被使用,但我的 html 模板总是以 html 形式显示抓取的文本.
这是抓取边缘站点并显示到 index.html 模板中的示例。 在此处输入图像描述
我设置 url 是 theverge.com,选择器是 class,
下面是Go中的源代码
块引用
,
func scrape(url, tag, selector, value string) string {
container := ""
res, e := http.Get(url)
handleError(e)
defer res.Body.Close()
doc, err := goquery.NewDocumentFromReader(res.Body)
handleError(err)
var xpath string
//I used xpath to get text with any selector.
if len(tag) != 0 && len(selector) != 0 && len(value) != 0 {
xpath = fmt.Sprintf("%s[%s=\"%s\"]", tag, selector, value)
} else if len(tag) != 0 && len(selector) != 0 {
xpath = fmt.Sprintf("%s[%s]", tag, selector)
} else if len(selector) != 0 && len(value) != 0 {
xpath = fmt.Sprintf("*[%s=\"%s\"]", selector, value)
} else if len(selector) != 0 {
xpath = fmt.Sprintf("*[%s]", selector)
} else if len(tag) != 0 {
xpath = fmt.Sprintf("%s", tag)
} else if len(tag) == 0 && len(selector) == 0 && len(value) == 0 {
xpath = "html"
} else {
xpath = "THISFORMATISNOTRIGHT"
return xpath
}
fmt.Println(xpath)
items := doc.Find(xpath)
items.Each(func(i int, item *goquery.Selection) {
node := item.Text()
container += "<p>\"" + cleanString(node) + "\"</p>" + "\n\n"
})
container = "<p>\"" + container + "\"</p>"
return container
}
如何将 html 标记和内部文本显示为天真的文本?