-1

我有一个Python 程序来检查亚马逊的产品价格是否低于预期。

出于学习目的,并使其更便携,我将该代码移植到 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 次返回名称。这绝对是不正确的。这不是 Amazon 的问题,也不是关于 tag 的问题#productTitle,因为 Python 代码每次都能正常工作。

可能有什么问题?如何进一步调试此问题?我再说一遍,第一个使用 Go 的代码 :)

4

1 回答 1

0

我发现了问题:)

我的 Python 代码和 Go 代码之间有些不同。在 Python 中,我发布了一个真正的用户代理头,而在 Go 中,它是该包的默认值。

这意味着,实际上,亚马逊阻止了大部分尝试,返回了验证码。

于 2019-09-03T17:53:13.117 回答