问题描述
我正在制作一个Web应用程序,该应用程序通过使用goquery抓取来检索嵌套标记中的文本。
我想以文本形式显示文字和包含文字的标签,例如“ Hello World!”。
项目-它是goquery.Selection-item.Text()和节点,_:= item.Html(),fmt.Sprintf(“%s”,node),但是我的html模板始终显示抓取的文本html格式。
这是一个示例,它刮取了verge网站并显示在index.html模板中。 enter image description here
我设置url为theverge.com,选择器为class
下面是Go中的源代码
Blockquote
,
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\"]",value)
} else if len(tag) != 0 && len(selector) != 0 {
xpath = fmt.Sprintf("%s[%s]",selector)
} else if len(selector) != 0 && len(value) != 0 {
xpath = fmt.Sprintf("*[%s=\"%s\"]",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
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)