在使用 go-rod
库时,如果你想要获取点击 <a>
标签后返回的 JSON 响应,你可以通过以下步骤来实现:
启动浏览器并导航到目标页面:首先,你需要启动一个浏览器实例并导航到你想要操作的页面。
找到并点击 <a>
标签:使用 go-rod
提供的选择器功能找到你想要点击的 <a>
标签,并模拟点击操作。
监听网络请求:在点击 <a>
标签之前,设置一个网络监听器来捕获页面发出的网络请求。
获取 JSON 响应:在网络监听器中,检查每个请求的响应,找到你感兴趣的 JSON 响应并提取出来。
以下是一个示例代码,展示了如何实现上述步骤:
package main
import (
"fmt"
"log"
"time"
"github.com/go-rod/rod"
"github.com/go-rod/rod/lib/proto"
)
func main() {
// 启动浏览器
browser := rod.New().MustConnect()
defer browser.MustClose()
// 创建一个新页面
page := browser.MustPage("https://example.com")
// 设置网络监听器
wait := page.WaitRequestIdle()
page.MustWaitLoad()
// 找到并点击 <a> 标签
page.MustElement("a").MustClick()
// 等待网络请求完成
wait()
// 监听网络响应
page.EachEvent(func(e *proto.NetworkResponseReceived) {
// 检查响应类型是否为 JSON
if e.Response.MimeType == "application/json" {
// 获取响应体
body, err := proto.NetworkGetResponseBody{RequestID: e.RequestID}.Call(page)
if err != nil {
log.Fatalf("Failed to get response body: %v", err)
}
// 打印 JSON 响应
fmt.Println(string(body))
}
})
// 等待一段时间以确保所有请求都被处理
time.Sleep(5 * time.Second)
}
启动浏览器并导航到目标页面:使用 rod.New().MustConnect()
启动浏览器,并使用 MustPage
导航到目标页面。
找到并点击 <a>
标签:使用 MustElement
找到 <a>
标签,并使用 MustClick
模拟点击操作。
设置网络监听器:使用 WaitRequestIdle
等待网络请求完成,并使用 EachEvent
监听网络响应。
获取 JSON 响应:在网络监听器中,检查每个响应的 MIME 类型是否为 application/json
,如果是,则使用 NetworkGetResponseBody
获取响应体并打印出来。
<a>
标签的点击确实会触发一个网络请求,并且该请求返回的是 JSON 数据。WaitRequestIdle
会等待所有网络请求完成,确保你在点击后等待足够的时间来捕获响应。通过这种方式,你可以在 go-rod
中获取点击 <a>
标签后返回的 JSON 响应。