milivojsa/laravel-chrome
Composer 安装命令:
composer require milivojsa/laravel-chrome
包简介
A Laravel Wrapper for Chrome Headless. Get the DOM of any webpage.
README 文档
README
Get the DOM of any webpage by using headless Chrome.
💡 This is a Laravel wrapper of milivojsa/chrome-php.
Requirements
This package requires the Puppeteer Chrome Headless Node library.
If you want to install it on Ubuntu 16.04 you can do it like this:
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
Installation
You can install this package via composer by running:
composer require milivojsa/laravel-chrome
After that, the package will automatically register itself.
To publish the configuration file, you need to run:
php artisan vendor:publish --provider="ChromeHeadless\ChromeHeadlessServiceProvider"
This will create a config file at config/chrome.php.
Configuration
The configuration can be found at config/chrome.php.
Custom Chrome Path
You can specify a custom path to your Chrome installation.
/* |-------------------------------------------------------------------------- | Chrome Path |-------------------------------------------------------------------------- | | Manually set the path where Google Chrome is installed. | */ 'exec_path' => '/path/to/chrome',
Custom User Agent
You can specify a custom user agent. By default the standard Chrome Headless user agent will be used.
/* |-------------------------------------------------------------------------- | User Agent |-------------------------------------------------------------------------- | | Change the user agent that will be used by Google Chrome. | */ 'user_agent' => 'nice-user-agent',
Timeout
You can specify a timeout after which the process will be killed. The timeout should be given in seconds.
/* |-------------------------------------------------------------------------- | Timeout |-------------------------------------------------------------------------- | | Specify a timeout in seconds. | (null = no timeout) | */ 'timeout' => 10,
If the process runs out of time a Symfony\Component\Process\Exception\ProcessTimedOutException will be thrown.
Viewport
You can specify a custom viewport that will be used when you make a request. By default the Chrome Headless standard of 800x600px will be used.
/* |-------------------------------------------------------------------------- | Viewport |-------------------------------------------------------------------------- | | Specify a viewport. | */ 'viewport' => [ 'width' => 1920, 'height' => 1080 ],
Blacklist
You can specify a list of regular expressions for files that should not be loaded when you request a website. These expressions will be checked against the url of the file.
/* |-------------------------------------------------------------------------- | Blacklist |-------------------------------------------------------------------------- | | Specify a list of files that should not be loaded. | */ 'blacklist' => [ 'www.google-analytics.com', 'analytics.js' ],
Custom Headers
You can specify custom headers which will be used for the request.
/* |-------------------------------------------------------------------------- | Additional Request Headers |-------------------------------------------------------------------------- | | Specify additional headers. | */ 'headers' => [ 'DNT' => 1 // DO NOT TRACK ],
Usage
Here is a quick example how to use this package:
use ChromeHeadless\Laravel\ChromeHeadless; $html = ChromeHeadless::url('https://example.com')->getHtml();
Instead of getting the DOM as a string, you can also use thegetDOMCrawler() method, which will return a Symfony\Component\DomCrawler\Crawler instance.
use ChromeHeadless\Laravel\ChromeHeadless; $dom = ChromeHeadless::url('https://example.com')->getDOMCrawler(); $title = $dom->filter('title')->text();
This makes it easy to filter the DOM for specific elements. Check the full documentation here.
Testing
You can run the tests by using
composer test
milivojsa/laravel-chrome 适用场景与选型建议
milivojsa/laravel-chrome 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 267 次下载、GitHub Stars 达 0, 最近一次更新时间为 2019 年 02 月 04 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「dom」 「headless」 「laravel」 「webpage」 「chrome」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 milivojsa/laravel-chrome 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 milivojsa/laravel-chrome 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 milivojsa/laravel-chrome 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
A library that provides basic utilities for creating HTML documents.
A bridge between SimpleXML and the DOM extension, plus a bunch of convenience methods
This extension provides integration with solr to output content from TYPO3 in JSON format.
BigPipe: Pipelining web pages for high performance built in PHP.
Instrument headless chrome/chromium instances from php5.6
Load DOM document safety
统计信息
- 总下载量: 267
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 8
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2019-02-04