如何在 Golang 请求中执行 javascript 异步代码

我需要阅读动态生成的页面的内容 阿贾克斯 从带有此代码的网站 高朗,它适用于非 ajax 页面,但我找不到执行此操作的包或示例。谢谢。


package main


import(


    "fmt"

    "time"

    "net/http"

    "github.com/PuerkitoBio/goquery"

    "strings"

    "strconv"


)


func main() {


    var masterURI [1]string

    masterURI[0] = "http://uri1"

    /*masterURI[1] = "http://uri2"

    masterURI[2] = "http://uri3"*/


    for _, uri := range masterURI {


        doc, err := extractHTML(uri)


        check(err)


        search := doc.Find(".pagination li a span").Eq(-1)


        numPages, err := strconv.Atoi(search.Text())


        check(err)


        var i int


        for i = 1; i <= numPages; i++ {


            page := uri + "#/page-" + strconv.Itoa(i)


            fmt.Println("\n========> " + page)


            doc, err := extractHTML(page)


            check(err)


            search := doc.Find(".product-name")


            for i := range search.Nodes {

                product := strings.TrimSpace(search.Eq(i).Text())

                fmt.Println(product)

                // use `single` as a selection of 1 node

            }


        }


        fmt.Println(" --- ")


    }


}


func extractHTML(url string) (doc *goquery.Document, err error) {


    userAgent := "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.93 Safari/537.36 OPR/32.0.1948.69";


    trans := &http.Transport{

       DisableKeepAlives: true,

    }


    timeout := time.Duration(600 * time.Second)


    myClient := &http.Client{Transport: trans, Timeout: timeout}


    req, err := http.NewRequest("GET", url, nil)


    check(err)


    req.Header.Add("User-Agent", userAgent)


    resp, err := myClient.Do(req)


    req.Close = true


    check(err)


    if resp.StatusCode == 200 {


        doc, err = goquery.NewDocumentFromResponse(resp) 


    }


    check(err)


    resp.Body.Close()


    return doc, err


}


func check(err error) {


    if err != nil {


        panic(err)


    }


}



12345678_0001
浏览 205回答 1
1回答

扬帆大鱼

由于有些人对您的回答投了反对票,因此我会尽力为您指出正确的方向。你不在 Go 中执行 javascript。您通常在浏览器中使用开发工具(F12 或其他工具)执行此操作,查看网络选项卡以查看正在调用哪个 URL,然后在代码中调用该URL。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go