首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Golang Colly登录Amazon

如何使用Golang Colly登录Amazon
EN

Stack Overflow用户
提问于 2021-09-19 10:08:46
回答 1查看 167关注 0票数 2

我正在尝试登录到我的亚马逊买家帐户以获取跟踪信息。我让wordpress-woocommerce登录并获取信息,但我不能为亚马逊。

代码语言:javascript
复制
package main

import (
    "fmt"
    "log"

    "github.com/gocolly/colly"
)

func main() {
    // create a new collector
    c := colly.NewCollector()
    login_link := "https://www.amazon.de/-/en/ap/signin?openid.pape.max_auth_age=0&openid.return_to=https%3A%2F%2Fwww.amazon.de%2F%3Flanguage%3Den_GB%26ref_%3Dnav_signin&openid.identity=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&openid.assoc_handle=deflex&openid.mode=checkid_setup&openid.claimed_id=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&openid.ns=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0&"
    // authenticate
    err := c.Post(login_link, map[string]string{"username": "mail@example.com", "password": "123qwerty"})
    if err != nil {
        log.Fatal(err)
    }

    // attach callbacks after login
    c.OnResponse(func(r *colly.Response) {
        log.Println("response received", r.StatusCode) //response received 200
    })

    c.OnHTML("div", func(h *colly.HTMLElement) {
        fmt.Println("PRINT ALL: ", h.Text)
    })

    // start scraping
    c.Visit("https://www.amazon.de/-/en/gp/your-account/order-history?ref_=ya_d_c_yo")
}

Wordpress登录一页-亚马逊登录两页。我们可能需要滚动2页的亚马逊https://i.stack.imgur.com/4TNj5.png -> Wordpress登录(一页)

https://i.stack.imgur.com/bhE4m.png ->亚马逊登录(第1页-邮件)

https://i.stack.imgur.com/0BFcA.png ->亚马逊登录(第1页-密码)

EN

回答 1

Stack Overflow用户

发布于 2021-09-20 10:43:42

在这种情况下,chromedp是一个非常有用的库。您可以尝试以下代码片段;

代码语言:javascript
复制
package main

import (
    "context"
    
    "os"
    "time"

    "github.com/chromedp/chromedp"
)

func main() {
    
    var res []byte
    ctx, cancel := chromedp.NewContext(context.Background(), chromedp.WithBrowserOption())
    defer cancel()
    err := chromedp.Run(ctx,
        chromedp.Navigate("https://www.amazon.com"),
        chromedp.WaitReady("body"),
        chromedp.Click(`a[data-nav-role="signin"]`, chromedp.ByQuery),
        chromedp.Sleep(time.Second*2),
        chromedp.SetValue(`ap_email`, "youramazonemail", chromedp.ByID),
        chromedp.Click(`continue`, chromedp.ByID),
        chromedp.Sleep(time.Second*1),
        chromedp.SetValue(`ap_password`, "youramazonpassword", chromedp.ByID),
        chromedp.Click(`signInSubmit`, chromedp.ByID),
        chromedp.Sleep(time.Second*2),
        chromedp.CaptureScreenshot(&res),
    )
    if err != nil {
        log.Fatal(err)
    }
    os.WriteFile("loggedin.png", res, 0644)
}

上面给出的例子基本上是通过登录过程所需的所有步骤进行导航。登录成功后,您可以使用context (ctx)通过相同的功能导航并获取您想要的任何信息。

代码语言:javascript
复制
chromedp.Run(ctx,
        chromedp.Navigate(url),
        ...)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69242268

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档