我需要使用 ajax 读取动态生成页面的内容从网站上使用此代码在 golang ,它适用于非 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)
}
}
最佳答案
由于有些人对您的回答投了反对票,我将尽力为您指明正确的方向。
您不在 Go 中执行 javascript。您通常在浏览器中执行此操作,使用开发工具(F12 或其他),查看“网络”选项卡以查看正在调用的 URL,然后在您的代码中调用那个 URL。
关于javascript - 如何在 Golang 请求中执行 javascript 异步代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33307501/