我想在 Laravel 应用程序中使用 symfony panther 包抓取一个站点。根据文档https://github.com/symfony/panther#a-polymorphic-feline我不能使用HttpBrowser
也不能使用HttpClient
类,因为它们不支持 JS。
因此,我尝试使用 ChromClient,它使用本地 chrome 可执行文件和 panther 包附带的 chromedriver 二进制文件。
$client = Client::createChromeClient();
$crawler = $client->request('GET', 'http://example.com');
dd($crawler->html());
不幸的是,我只收到空的默认 chrome 页面作为 HTML:
<html><head></head><body></body></html>
$client
使用或-instance执行其他操作的每种方法都会$crawler
导致错误“没有可用的节点”。
此外,我尝试了文档中的基本示例https://github.com/symfony/panther#basic-usage --> 相同的结果。
我在 Windows 上的 WSL 下使用 ubuntu 18.04 Server 并安装了google-chrome-stable
deb 包。这似乎有效,因为安装后不再出现“找不到二进制文件”错误。
我还尝试手动使用 Windows 主机系统的可执行文件,但这只会打开一个空的 CMD 窗口,在关闭时总是重新打开。我必须通过 TaskManager 终止该进程。
这是因为 Ubuntu 服务器没有任何可用的 x-server 吗?
我可以做些什么来接收任何 HTML?