Веб-сканирование Symfony / Panther: не удается получить HTML - PullRequest
0 голосов
/ 07 мая 2020

Я хочу очистить сайт с помощью пакета symfony panther в приложении Laravel. Согласно документации https://github.com/symfony/panther#a -polymorphi c -feline я не могу использовать классы HttpBrowser или HttpClient, потому что они не поддерживают JS.

Поэтому я попробуйте использовать ChromClient, который использует локальный исполняемый файл chrome и двоичный файл chromedriver, поставляемый с пакетом panther.

$client = Client::createChromeClient();
$crawler = $client->request('GET', 'http://example.com');
dd($crawler->html());

К сожалению, я получаю только пустую страницу по умолчанию chrome как HTML:

<html><head></head><body></body></html>

Каждый подход, чтобы сделать что-то еще с экземпляром $client или $crawler, приводит к ошибке «Нет доступных узлов».

Кроме того, я попробовал базовый c пример из документации https://github.com/symfony/panther#basic -usage -> тот же результат.

Я использую сервер ubuntu 18.04 под WSL на Windows и установил google-chrome-stable deb-пакет . Похоже, это сработало, потому что после установки ошибка «двоичный файл не найден» больше не возникает.

Я также пытался вручную использовать исполняемый файл хост-системы Windows, но при этом открывается только пустое окно CMD, которое всегда открывается при закрытии. Мне нужно убить процесс через TaskManager.

Это потому, что на сервере Ubuntu нет доступного x-сервера?
Что я могу сделать, чтобы получить любой HTML?

...