Я хочу очистить сайт с помощью пакета 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?