michaeluno/php-simple-web-scraper

一个运行在 Heroku 上的 PHP 应用程序,可以抓取网站输出,包括由 JavaScript 生成的内容。

1.4.4 2021-06-22 14:25 UTC

This package is auto-updated.

Last update: 2024-09-22 21:47:41 UTC


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

确定输出类型,包括 htmljsonscreenshot

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

它接受以下值: pdfpngjpgjpegbmpppm

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

决定是否加载图像。默认情况下,对于 htmljson 输出类型,此功能被禁用。对于 screenshot 输出类型,此功能被启用。

接受布尔值 truefalse10

示例
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 应用程序实例。

要求

部署步骤

a) 快速部署

您可以使用以下按钮简单地部署此应用程序

Deploy

b) 手动部署

  1. 将此仓库克隆到您的本地计算机上。创建一个目录,然后在控制台窗口中,键入以下内容。
git clone https://github.com/michaeluno/php-simple-web-scraper.git

这将下载仓库文件。

  1. 将工作目录更改为克隆的目录。
cd php-simple-web-scraper
  1. 从 Heroku CLI 登录到 Heroku。
heroku login
  1. 创建一个新的 Heroku 应用。
heroku create

这会得到一个类似以下的内容,其中包含一个随机应用名称。在下面的例子中,glacial-basin-46381 是应用名称。

https://glacial-basin-46381.herokuapp.com/ | https://git.heroku.com/glacial-basin-46381.git
  1. 键入以下内容。将 {heroku-app-name} 替换为上一步中给出的应用名称。
heroku git:remote -a {heroku-app-name}
  1. 将文件上传到 Heroku。
git push heroku master
  1. 在浏览器中打开应用。
heroku open