【发布时间】:2021-10-10 09:28:58
【问题描述】:
我需要抓取一个网站,其中我感兴趣的标签是:
<script type="myjson">
[{"class": "companyname", "location"....and so on
</script>
目前我正在使用此代码 sn-p 完成工作 (goquery):
doc.Find("script").Each(func(i int, element *goquery.Selection) {
_, exists := element.Attr("type")
if exists {
var filepath string
filepath = "mypath"
file, err := os.Create(filepath)
if err != nil {
panic("COULD NOT CREATE FILE")
}
file.WriteString(element.Text())
fmt.Println(element.Text())
file.Close()
这段代码的问题是,虽然 element.Text() 被正确打印到标准输出(它打印一个长切片,里面有几个 json,我需要打印到一个文件以供以后工作),file.WriteString 语句不向文件打印任何内容。该文件仍为空。
看来我的查询是错误的,它输出了 2 个元素;第一个长度为零,即打印到文件中,第二个具有真实内容,打印到标准输出但不打印到文件。
您能否建议对我的代码进行更正,以便将内容正确打印到文件中?我猜我的 goquery 查询可能有错误。
【问题讨论】:
-
您可以编辑示例 HTML 以反映两个脚本元素吗?
标签: go web-scraping goquery