Go 经常解析失败(goquery)
Go parsing failing quite often (goquery)
我有一个 Python program 检查亚马逊产品价格是否低于预期。
出于学习目的并使其更具可移植性,我将该代码移植到 Go。这是我的第一个 Go 程序。
为了解析 html,我使用 goquery。到目前为止,我只是想检索产品的名称。这是代码:
package main
import (
"flag"
"fmt"
"log"
"github.com/PuerkitoBio/goquery"
)
func main() {
url := flag.String("url", "", "URL of the product")
flag.Parse()
doc, err := goquery.NewDocument(*url)
if err != nil {
log.Fatal(err)
}
name := doc.Find("#productTitle").Text()
fmt.Println(name)
}
我遇到了什么问题?它在 8 次执行中大约有 1 次返回名称。这绝对是不正确的。这不是亚马逊的问题,也不是标签 #productTitle
的问题,因为 Python 代码每次都有效。
可能出了什么问题?我怎样才能进一步调试这个问题?我重复一遍,第一个使用 Go 的代码 :)
我发现了问题:)
我的 Python 代码和 Go 代码有些不同。在 Python 中,我发布了一个真正的 user-agent header,而在 Go 中,它是该包的默认值。
这意味着,实际上是亚马逊阻止了大部分尝试,并返回了验证码。
我有一个 Python program 检查亚马逊产品价格是否低于预期。
出于学习目的并使其更具可移植性,我将该代码移植到 Go。这是我的第一个 Go 程序。
为了解析 html,我使用 goquery。到目前为止,我只是想检索产品的名称。这是代码:
package main
import (
"flag"
"fmt"
"log"
"github.com/PuerkitoBio/goquery"
)
func main() {
url := flag.String("url", "", "URL of the product")
flag.Parse()
doc, err := goquery.NewDocument(*url)
if err != nil {
log.Fatal(err)
}
name := doc.Find("#productTitle").Text()
fmt.Println(name)
}
我遇到了什么问题?它在 8 次执行中大约有 1 次返回名称。这绝对是不正确的。这不是亚马逊的问题,也不是标签 #productTitle
的问题,因为 Python 代码每次都有效。
可能出了什么问题?我怎样才能进一步调试这个问题?我重复一遍,第一个使用 Go 的代码 :)
我发现了问题:)
我的 Python 代码和 Go 代码有些不同。在 Python 中,我发布了一个真正的 user-agent header,而在 Go 中,它是该包的默认值。
这意味着,实际上是亚马逊阻止了大部分尝试,并返回了验证码。