问题标签 [chromedp]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
6297 浏览

google-chrome - 如何将 Chrome 无头与 chromedp 一起使用?

我正在使用chromedp,它具有专注于元素、填充文本等功能。Chrome 59 具有跨平台无头支持。它允许在无头/服务器环境中运行 Chrome。要通过 DevTools 远程调试协议使用,请使用 --headless 命令行标志启动一个普通的 Chrome 二进制文件(目前仅限 Linux):

$ google-chrome --headless --disable-gpu --remote-debugging-port=9222 https://www.google.fr

我怎么知道chromedp要发送 --headless 标志以及其他标志?

0 投票
1 回答
4734 浏览

google-chrome - 如何使用 chromedp 获取 HTTP 响应正文?

使用github.com/knq/chromedp,一个go使用 Chrome 调试协议驱动 Web 浏览器的包,我可以导航到网页、更新表单和提交表单,但我需要检索 HTTP 响应正文并且还没有弄清楚如何. 我希望能够检索 JSON 响应(不是 HTML)的 HTTP 响应正文。

通过查看代码,似乎 HTTP 响应正文在CachedResponse.Body属性中:

https://github.com/knq/chromedp/blob/b9e4c14157325be092c1c1137edbd584648d8c72/cdp/cachestorage/types.go#L30

并且它应该可以使用:

https://github.com/knq/chromedp/blob/b9e4c14157325be092c1c1137edbd584648d8c72/cdp/cachestorage/cachestorage.go#L168

示例使用cdp.Tasks如下简单示例。

https://github.com/knq/chromedp/blob/b9e4c14157325be092c1c1137edbd584648d8c72/examples/simple/main.go

似乎CachedResponse.Body可以RequestCachedResponseParams.Do()通过引用调用来访问RequestCachedResponseParams.CacheID,但仍然需要以下内容:

  1. 如何打电话RequestCachedResponseParams.Do()-cdp.Tasks似乎可以使用cdp.ActionFunc()
  2. 如何访问RequestCachedResponseParams.CacheID
0 投票
1 回答
1530 浏览

html - 如何处理网页上的 iframe

我想获取网页上存在的 iframe 的 HTML 源代码。我在 Go 中使用 chromedp 包。如何处理带有 chromedp 包的 iframe?文档很少,所以找不到方法。

链接:

chromedp

Google-doc以获取有关我的任务的更多详细信息。

0 投票
1 回答
2687 浏览

go - 如何登录网页并截图

如何使用 chromedp 登录网页并截图。

https://github.com/chromedp/chromedp

0 投票
2 回答
4589 浏览

go - 单击带有 Chromedp 的按钮

我正在尝试使用 Go 库 Chromedp 从网页中抓取一些数据。

我基本上需要点击一个按钮,例如 W3C School 网站上的“点击我”按钮。我需要使用 HTML 标记的valueHTML 属性过滤该按钮input(因为没有特定的目标 ID,并且大多数 Chromedp 示例都使用基于 ID 属性的选择器)。

以下代码似乎永远挂在初始网页上,而无需单击按钮。

  • 为什么下面的代码没有点击按钮?
  • Chromedp 是使用一些“标准”xpath 过滤器还是什么?我认为 Chromedp 中选择器的语法是某种标准语法,例如 Selenium,但我找不到了解这些选择器规则的方法。在 Chromedp 选择器中构建过滤器的语法规则是什么?
  • Chromedp 的其他文档来源是否不是源代码或 Go 文档?

另外,在运行上面的代码时,我看到了各种各样的日志,但基本上我看到这段日志被一遍又一遍地打印出来,这似乎表明标签不存在,但它确实存在而且我不存在知道如何弄清楚选择器使用什么语法?

0 投票
1 回答
1843 浏览

go - 如何使用 chromedp 进行代理

我想截取亚马逊等网站的(数千页)屏幕截图。我尝试了一些代码,但在屏幕截图中出现验证码或流量错误。所以我想用chromedp添加代理。

也试过这个,但没有用。

0 投票
1 回答
250 浏览

go - 无法获取当前窗口标题

打开后,我尝试在 gmail 收件箱页面上获取 Windows 标题。由于某种原因,标题为空。我究竟做错了什么?Chromedp 用于浏览器自动化。

控制台中的输出:

2019/10/22 08:01:49 超出上下文截止日期

2019/10/22 08:01:49 成功。

标题:

0 投票
2 回答
172 浏览

go - 抑制从包生成的错误消息

我正在使用一个 Go 函数,它的工作原理大致如下:

  • 它遍历给定的 URL 并搜索字符串
  • 为了遍历网站,我使用了Chrome DevTools包。

我的问题是在进行遍历时,它会记录一些错误消息,例如

ERROR: encountered exception 'Uncaught' (287:57) 等等

我必须在控制台中抑制此错误打印。我检查了 chrome-dp 问题,我认为这是一个已知问题,参考:https ://github.com/chromedp/chromedp/issues/374#issuecomment-498015901

如何避免直接打印到控制台?

0 投票
2 回答
3226 浏览

docker - 如何在 docker 中运行 chromedp

我正在尝试在 docker 中运行chromedp。我的main.go

Dockerfile:

当我运行它时:

它输出:

所以它不会运行我的 go 应用程序。我希望它chromedp/headless-shell包含 google-chrome 并且我的 golang 应用程序将通过github.com/chromedp/chromedp成功使用它

更新 1

添加了缺少的目录:

现在有以下输出,我的应用程序仍然没有运行:

更新 2

看起来CMD ["/app"]没有运行我的 main.go 文件,因为它没有从中打印任何行。当我手动运行它时:

我看到那个google-chrome应用程序仍然不存在,嗯....

0 投票
0 回答
931 浏览

google-chrome - 从 Chrome 下载流式 m3u8 视频

我试图从下面的 html 代码下载视频。

请注意,我将在 Golangchromedp代码中运行它。

可以在以下位置找到https://www.zee5.com/tvshows/details/bhabi-ji-ghar-par-hain/0-6-199/bhabi-ji-ghar-par-hain-episode-343-june-21-2016-full-episode/0-1-532

问题是如果你检查网络选项卡,你会在网络中找到这个 https://netst4z5x-vh.akamaihd.net/i/draco/shows/and_tv/Bhabiji_Ghar_Par_Hai/June/21062016/Bhabiji_Ghar_Par_Hai_Episode_343_Ozee.smil/master.m3u8?hdnea=st=1575885515~exp=1575888515~acl=/*~hmac=8f4d35fe89877d455ae614f88ea9c9cf2241ae6ab1bdbbd1790f8376863fd94d

但是网络选项卡不断发出新的视频请求,因此使以前的每个链接都过时了

看下面的截图 在此处输入图像描述