Using github.com/knq/chromedp, a go package to drive web browsers using Chrome Debugging Protocol, I can navigate to webpages, update forms and submit forms, but I need to retrieve a HTTP response body and haven't figured out how to yet. I'd like to be able to retrieve the HTTP response body for a JSON response (not HTML).
From looking in the code, it seems the HTTP response body is in the CachedResponse.Body property:
And that it should be accessible …
我正在尝试在docker中运行chromedp。我的main.go:
package main
import (
"context"
"log"
"time"
"github.com/chromedp/chromedp"
)
func main() {
log.SetFlags(log.LstdFlags | log.Llongfile)
ctx, cancel := chromedp.NewContext(
context.Background(),
chromedp.WithLogf(log.Printf),
)
defer cancel()
// create a timeout
ctx, cancel = context.WithTimeout(ctx, 15 * time.Second)
defer cancel()
u := `https://www.whatismybrowser.com/detect/what-is-my-user-agent`
selector := `#detected_value`
log.Println("requesting", u)
log.Println("selector", selector)
var result string
err := chromedp.Run(ctx,
chromedp.Navigate(u),
chromedp.WaitReady(selector),
chromedp.OuterHTML(selector, &result),
)
if err != nil {
log.Fatal(err)
}
log.Printf("result:\n%s", result)
}
Run Code Online (Sandbox Code Playgroud)
Dockerfile:
FROM golang:latest as build-env …Run Code Online (Sandbox Code Playgroud) 我正在使用chromedp,它具有专注于元素,填写文本等功能.Chrome 59具有跨平台无头支持.它允许在无头/服务器环境中运行Chrome.要通过DevTools远程调试协议使用,请使用--headless命令行标志启动普通的Chrome二进制文件(仅适用于Linux):
$ google-chrome --headless --disable-gpu --remote-debugging-port = 9222 https://www.google.fr
如何判断chromedp- 发送无头旗帜以及其他旗帜?
我正在尝试使用 Go 库 Chromedp 从网页中抓取一些数据。
我基本上需要单击一个按钮,例如 W3C 学校网站上的“Click me”按钮。我需要使用valueHTML 标记的 HTML 属性来过滤该按钮input(因为没有要定位的特定 ID,并且大多数 Chromedp 示例使用基于 ID 属性的选择器)。
以下代码似乎永远挂在初始网页上,无需单击按钮。
package main
import (
"context"
"log"
"time"
"github.com/chromedp/chromedp"
)
func main() {
var err error
// create context
ctxt, cancel := context.WithCancel(context.Background())
defer cancel()
// create chrome instance
c, err := chromedp.New(ctxt, chromedp.WithLog(log.Printf))
if err != nil {
log.Fatal(err)
}
// …Run Code Online (Sandbox Code Playgroud)