helloiamlukas / chrome-php
该包已被废弃且不再维护。没有建议的替代包。
Chrome无头版本PHP包装器。获取任何网页的DOM。
v2.0
2018-05-27 20:48 UTC
Requires
- php: ^7.1
- symfony/css-selector: ^4.0
- symfony/dom-crawler: ^4.0
- symfony/process: ^4.0
Requires (Dev)
- phpunit/phpunit: ^6.1|^7.0
This package is auto-updated.
Last update: 2021-09-16 20:01:28 UTC
README
使用无头Chrome获取任何网页的DOM。灵感来源于 Browsershot。
要求
此包需要 Puppeteer Chrome Headless Node库。如果您想在Ubuntu 16.04上安装它,可以这样做
sudo apt-get update
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs gconf-service libasound2 libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3 libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 libgtk-3-0 libnspr4 libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 ca-certificates fonts-liberation libappindicator1 libnss3 lsb-release xdg-utils wget
sudo npm install --global --unsafe-perm puppeteer
sudo chmod -R o+rx /usr/lib/node_modules/puppeteer/.local-chromium
安装
要将此包添加到您的项目中,您可以通过运行以下命令使用composer进行安装
composer require helloiamlukas/chrome-php
使用方法
以下是如何使用此包的快速示例
use ChromeHeadless\ChromeHeadless; $html = ChromeHeadless::url('https://example.com')->getHtml();
除了将DOM作为字符串获取之外,您还可以使用getDOMCrawler()
方法,该方法将返回一个Symfony\Component\DomCrawler\Crawler
实例。
use ChromeHeadless\ChromeHeadless; $dom = ChromeHeadless::url('https://example.com')->getDOMCrawler(); $title = $dom->filter('title')->text();
这使得过滤DOM以获取特定元素变得容易。请参阅完整文档这里。
超时
您可以指定一个超时时间,在此时间后进程将被终止。超时应以秒为单位给出。
ChromeHeadless::url('https://example.com') ->setTimeout(10) ->getDOMCrawler();
如果进程超出时间,将抛出Symfony\Component\Process\Exception\ProcessTimedOutException
。
自定义Chrome路径
您可以指定一个自定义路径来指向您的Chrome安装。
ChromeHeadless::url('https://example.com') ->setChromePath('/path/to/chrome') ->getDOMCrawler();
自定义用户代理
您可以指定一个自定义用户代理。默认情况下将使用标准的Chrome Headless用户代理。
ChromeHeadless::url('https://example.com') ->setUserAgent('nice-user-agent') ->getDOMCrawler();
自定义头部
您可以指定用于请求的自定义头部。
ChromeHeadless::url('https://example.com') ->setHeaders([ 'DNT' => 1 // DO NOT TRACK ]) ->getDOMCrawler();
黑名单
您可以指定一个文件列表的正则表达式,这些文件在请求网站时不应被加载。这些表达式将针对文件的URL进行检查。
ChromeHeadless::url('https://example.com') ->setBlacklist([ 'www.google-analytics.com', 'analytics.js' ]) ->getDOMCrawler();
视口
您可以在发出请求时指定一个自定义视口。默认情况下将使用800x600px的Chrome Headless标准。
ChromeHeadless::url('https://example.com') ->setViewport([ 'width' => 1920, 'height' => 1080 ]) ->getDOMCrawler();
测试
您可以使用以下命令运行测试
composer test