michaeluno / php-simple-web-scraper
一个运行在 Heroku 上的 PHP 应用程序,可以抓取网站输出,包括由 JavaScript 生成的内容。
Requires
- php: >=5.6.20
- ext-json: *
- ext-mbstring: *
- jakoch/phantomjs-installer: 3.0.0 as 2.1.1-p08
- jonnyw/php-phantomjs: 4.6.1
- michaeluno/php-classmap-generator: 1.*
README
一个用于 Heroku 的 PHP 应用程序,可以抓取网站输出,包括由 JavaScript 生成的内容。
演示
访问 这里。如果服务器处于休眠状态,需要几秒钟才能唤醒。
用法
基本用法
使用 url
查询参数和编码的 URL 值执行 HTTP 请求。
http(s)://{app-address}/?url={encoded target url}
示例
http(s)://{app-address}/?url=https%3A%2F%2Fgithub.com
参数
output
确定输出类型,包括 html
、json
、screenshot
。
html (默认)
目标网站的 HTML 源代码。同时检索并输出由 JavaScript 生成的内容。
json
output=json
作为 JSON 的 HTTP 响应数据。对于与 JSONP 的跨域通信很有用。
示例
http(s)://{app-address}/?url=https%3A%2F%2Fgithub.com&output=json
screenshot
output=screenshot
网站快照的 jpeg 图片。
示例
http(s)://{app-address}/?url=https%3A%2F%2Fgithub.com&output=screenshot
file-type
当为 output
参数提供 screenshot
时,可以使用 file-type
参数设置输出文件类型。默认:jpg
。
它接受以下值: pdf
、png
、jpg
、jpeg
、bmp
、ppm
。
width
当为 output
参数提供 screenshot
时,width
设置截图图像宽度。
height
当为 output
参数提供 screenshot
时,height
设置截图图像高度。不设置则获取完整高度。默认最小高度为 720
像素。
示例
http(s)://{app-address}/?url=https%3A%2F%2Fgithub.com&output=screenshot&file-type=png
user-agent
设置自定义用户代理。默认情况下,访问应用程序的客户端的用户代理将被使用。可以通过指定此参数的值来更改。
如果提供 random
,则用户代理将被随机分配。
示例
设置用户代理,Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:57.0) Gecko/20100102 Firefox/57.0
,
http(s)://{app-address}/?url=https%3A%2F%2Fwww.whatismybrowser.com%2Fdetect%2Fwhat-http-headers-is-my-browser-sending&user-agent=Mozilla/5.0%20(Windows%20NT%206.1;%20Win64;%20x64;%20rv:57.0)%20Gecko/20100102%20Firefox/57.0
http(s)://{app-address}/?url=https%3A%2F%2Fwww.whatismybrowser.com%2Fdetect%2Fwhat-http-headers-is-my-browser-sending&user-agent=random
load-images
决定是否加载图像。默认情况下,对于 html
和 json
输出类型,此功能被禁用。对于 screenshot
输出类型,此功能被启用。
接受布尔值 true
、false
或 1
、0
。
示例
http(s)://{app-address}/?url=https%3A%2F%2Fwww.whatismybrowser.com%2Fdetect%2Fwhat-http-headers-is-my-browser-sending&user-agent=Mozilla/5.0%20(Windows%20NT%206.1;%20Win64;%20x64;%20rv:57.0)%20Gecko/20100102%20Firefox/57.0
output-encoding
设置用于输出的编码。默认:utf8
cache-lifespan
默认情况下,所有请求都被缓存 20 分钟。此参数确定缓存应保留多长时间。如果您不希望有缓存的结果或希望刷新缓存,请传递 0
。默认:1200
。
headers
设置自定义 HTTP 标头。接受数组值。
示例
设置 DNT
值,
http(s)://{app-address}/?url=https%3A%2F%2Fwww.whatismybrowser.com%2Fdetect%2Fwhat-http-headers-is-my-browser-sending&headers[DNT]=1
method
HTTP 请求方法。默认:GET
。接受以下值。
- OPTIONS
- GET
- HEAD
- POST
- PUT
- DELETE
- PATCH
当使用 POST
时,使用 data
请求键发送请求数据。程序检查 $_REQUEST[ 'data' ]
以发送 POST 数据。
示例
http(s)://{app-address}/?url=http%3A%2F%2Fhttpbin.org%2Fpost&method=POST&data[foo]=bar
作为 Heroku 应用程序运行
这是一个 Heroku 应用程序,旨在部署到 Heroku 应用程序实例。
要求
- Heroku 账户
- Heroku CLI
- Git
部署步骤
a) 快速部署
您可以使用以下按钮简单地部署此应用程序
b) 手动部署
- 将此仓库克隆到您的本地计算机上。创建一个目录,然后在控制台窗口中,键入以下内容。
git clone https://github.com/michaeluno/php-simple-web-scraper.git
这将下载仓库文件。
- 将工作目录更改为克隆的目录。
cd php-simple-web-scraper
- 从 Heroku CLI 登录到 Heroku。
heroku login
- 创建一个新的 Heroku 应用。
heroku create
这会得到一个类似以下的内容,其中包含一个随机应用名称。在下面的例子中,glacial-basin-46381
是应用名称。
https://glacial-basin-46381.herokuapp.com/ | https://git.heroku.com/glacial-basin-46381.git
- 键入以下内容。将
{heroku-app-name}
替换为上一步中给出的应用名称。
heroku git:remote -a {heroku-app-name}
- 将文件上传到 Heroku。
git push heroku master
- 在浏览器中打开应用。
heroku open