Как запустить Headless Chrome в командной консоли на облачной платформе Google - PullRequest
0 голосов
/ 02 апреля 2020

Я немного прочитал о Headless- Chrome и API Puppeteer, который разработал Google. Я уже видел несколько ответов о переполнении стека о запуске Headless Chrome, и я также знаю все о Selenium для тестирования веб-страниц и очистки веб-страниц. Я сам написал HTML Parser, Search and Update Package, но часто сталкиваюсь с проблемами, когда на веб-странице есть Java -скрипт, содержащий данные, которые я пытаюсь проанализировать и получить.

Согласно документации Google, безголовый Chrome поддерживается в оболочке Google Cloud Platform (тип Linux / Debian / BSD для UNIX командной строки, аналогично Amazon Web Services). Сегодня я попытался загрузить веб-страницу с помощью простой командной строки Chrome без головы, но оболочка вернула мне ошибку следующим образом:

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

Я набрал это в экземпляре BASH Оболочка на GCP, и получил эту ошибку.

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

Приведенный выше URL является просто URL из этого вопроса переполнения стека . Я просто играл, чтобы посмотреть, смогу ли я ответить. Это очень часто задаваемый вопрос типа «Web Scraping», который я читаю в теге Web Scraping. Это не слишком важно (не для меня, но, возможно, для ОП это может быть!) Согласно нескольким видео на YouTube, Google Chrome Безголовый JSON API позволяет пользователям запускать экземпляр Chrome так, что он работает как PaaS , а не как пользовательский интерфейс, который можно просматривать. Это кажется довольно хорошим, и я полностью осознаю, что технология Selenium Web-Scraping уже воспользовалась этой услугой. ОДНАКО, я просто хотел бы начать доступ к API JSON из Java - без использования Selenium - прежде всего, чтобы увидеть, могу ли я это понять, и, надеюсь, начать отправка JSON запросов (в Java) на Chrome Headless из экземпляра Google Cloud Shell без добавления всей сложности Java Selenium Package.

Этот вопрос переполнения стека (и ответы), похоже, является «частичной копией» моего вопроса, к сожалению, страницы справки Google утверждают, что с 2019 года служба полностью поддерживается - и ответы здесь - с 2018. Я подозреваю, что мне не нужно было выполнять КОМПЛЕКТАЦИЯ Chrome для запуска безголового экземпляра Chrome из командной строки, но я могу ошибаться. В любом случае, более новые ответы, отражающие работу 2019 и 2020 годов, проделанную Google Devs, помогут - и, что более важно, я хотел бы использовать «Обычные старые Java объекты» для запроса браузера, вместо использования Pupeteer и Node.JS. Я могу очень хорошо справиться с JSON в Java.

Есть ли команда BASH sudo, которую я могу использовать для запуска экземпляра Chrome в Оболочка GCP?

Я рассмотрел предложенные дубликаты этого вопроса и не знаю, что делать ...:)

1 Ответ

1 голос
/ 03 апреля 2020

Во-первых, вы должны установить безголовый 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
...