gpt4 book ai didi

java - 如何在 Google Cloud Platform 上的 Shell 中运行 Headless Chrome

转载 作者:行者123 更新时间:2023-12-02 08:47:19 24 4
gpt4 key购买 nike

我已经阅读了一些有关 Headless-Chrome 和 Google 开发的 Puppeteer API 的内容。到目前为止,我已经在 Stack Overflow 上看到了一些关于运行 Headless Chrome 的答案,而且我还了解有关 Selenium 用于测试网页和抓取网页的所有信息。我自己编写了一个 HTML 解析器、搜索和更新包,但是当网页上的 Java 脚本包含我试图解析和检索的数据时,我经常遇到问题。

根据 Google 的文档,Google Cloud Platform Shell(Linux/Debian/BSD 类型的 UNIX 命令行,类似于 Amazon Web Services)已支持 Headless Chrome。今天,我尝试使用简单的 Headless Chrome 命令行下载网页,但 Shell 向我返回了一个错误,如下所示:

@cloudshell:~$ chrome --headless --disable-gpu --dump-dom https://sepehr.irib.ir/?idc=32&idt=tv&idv=1

我在 GCP 上的 BASH Shell 实例中输入了此内容,并收到了此错误。

[1] 498
[2] 499
bash: chrome: command not found
[2]+ Done idt=tv

上面的URL只是来自这个Stack Overflow question的URL 。我只是想看看我是否可以回答它。这是我在网页抓取标签上读到的一种非常常见的“网页抓取”问题。这并不是太重要(对我来说不是,但可能对 OP 来说可能很重要!)根据一些 YouTube 视频,Google Chrome Headless JSON API 允许用户启动 Chrome 实例,以便它功能类似于PaaS,而不是可以查看的UI。这看起来相当不错,而且我完全知道 Selenium Web-Scraping Technology 已经利用了这项服务。然而,我只想开始从 Java 访问 JSON API - 不使用 Selenium - 主要是看看我是否能理解它,并希望开始制作 JSON从 Google Cloud Shell 实例向 Headless Chrome 发出请求(使用 Java),而不会增加 Java Selenium 包的所有复杂性。

这个Stack Overflow question (和答案)似乎是我的问题的“部分重复”,不幸的是,Google 帮助页面指出,自 2019 年以来,该服务已得到全面支持 - 这里的答案来自 2018 年。我怀疑我不应该执行完整的操作构建 Chrome 以便从命令行运行 headless Chrome 实例,但我可能是错的。无论如何,反射(reflect) Google 开发人员 2019 年和 2020 年工作的更新答案将会有所帮助 - 而且更重要的是,我想使用“Plain Old Java Objects”来查询浏览器,而不是使用 PupeteerNode.JS。我可以在 Java 中很好地处理 JSON

Is there a BASH 'sudo' command that I may use to get an instance of Chrome running in the Shell of GCP?

我已经查看了这个问题的建议重复项,但不知道该怎么办...:)

最佳答案

首先,您必须在 Cloud Shell 上安装 headless chrome。这是脚本

export CHROME_BIN=/usr/bin/google-chrome
export DISPLAY=:99.0
sh -e /etc/init.d/xvfb start
sudo apt-get update
sudo apt-get install -y libappindicator1 fonts-liberation libasound2 libgconf-2-4 libnspr4 libxss1 libnss3 xdg-utils
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo dpkg -i google-chrome*.deb

然后运行您的命令。不要忘记用双引号 " 将 URL 引起来,因为 & 在 linux 中运行另一个线程

/usr/bin/google-chrome-stable --headless --disable-gpu --dump-dom "https://sepehr.irib.ir/?idc=32&idt=tv&idv=1"

我使用此命令修复了一些错误

sudo apt --fix-broken install

关于java - 如何在 Google Cloud Platform 上的 Shell 中运行 Headless Chrome,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60991515/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com