2015-10-23 62 views
-3

我需要從的代碼中使用從網站中讀取動態生成的頁面的內容,它對非Ajax頁面正常工作但我無法找到一個包或者例子來做到這一點。謝謝。如何在Golang請求中執行javascript異步代碼

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) 

    } 

} 

回答

0

由於有些人已經低估了你的答案,我只是試圖指出你在正確的方向。

您不在Go中執行JavaScript。您通常會在瀏覽器中使用開發工具(F12或其他)執行此操作,查看Network選項卡以查看正在調用哪個URL,然後在代碼中調用 URL。

+0

感謝我現在請記住,特技,所以這是url我有:HTTP://uri1/modules/blocklayered/blocklayered-ajax.php id_category_layered = 7&layered_price_slider = 285_3999&的OrderBy =位置&orderway =降序&N = 12&P = 5&_ = 1445616085057 – Anonymous