1

我正在制作 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 标记和内部文本显示为天真的文本?

4

0 回答 0