跳转到主要内容

使用无头Chrome将JavaScript渲染的页面渲染为HTML

项目描述

# prerender

使用无头Chrome将JavaScript渲染的页面渲染为HTML/PDF/mhtml/png/jpeg

## 安装Chrome

无头模式从Chrome稳定版59+和测试版/开发版开始支持,您应该可以通过以下链接安装它:

https://www.google.com/chrome/browser/beta.html?platform=linux

## 启动Chrome无头模式

```bash
$ google-chrome --headless --remote-debugging-port=9222 --disable-gpu "about:blank"
```

要禁用图像加载,请添加`--blink-settings=imagesEnabled=false`参数

```bash
$ google-chrome --headless --remote-debugging-port=9222 --disable-gpu --blink-settings=imagesEnabled=false "about:blank"
```

## 安装Prerender

```bash
$ pip install -U prerender
```

## 启动Prerender

作为独立应用程序

```bash
$ prerender
```

在gunicorn下运行

```bash
$ gunicorn --bind 0.0.0.0:3000 --worker-class sanic.worker.GunicornWorker prerender.app:app
```

## 它是如何工作的

假设您已在`http://prerender.example.com:8000`下部署了Prerender,要渲染`http://example.com`,您可以这样做:

```bash
$ # 渲染HTML
$ curl http://prerender.example.com:8000/http://example.com
$ curl http://prerender.example.com:8000/html/http://example.com
$ # 渲染mhtml
$ curl http://prerender.example.com:8000/mhtml/http://example.com
$ # 渲染PDF
$ curl http://prerender.example.com:8000/pdf/http://example.com
$ # 渲染png
$ curl http://prerender.example.com:8000/png/http://example.com
$ # 渲染jpeg
$ curl http://prerender.example.com:8000/jpeg/http://example.com
```

## 配置

设置大多由环境变量配置。

| ENV | 默认值 | 描述 |
|----------------------------|------------------|-------------------------------------------------------------------------------------------------|
| HOST | 0.0.0.0 | Prerender监听主机 |
| PORT | 8000 | Prerender监听端口 |
| DEBUG | false | 切换调试模式 |
| PRERENDER_TIMEOUT | 30 | 渲染超时 |
| PAGE_DONE_CHECK_TIMEOUT | 200 | 检查页面是否加载完成的时间间隔(毫秒)|
| CONCURRENCY | 2 * CPU count | Chrome 页面数量 |
| MAX_ITERATIONS | 200 | 渲染这么多页面后重启 Chrome 页面 |
| CHROME_HOST | localhost | Chrome 远程调试主机 |
| CHROME_PORT | 9222 | Chrome 远程调试端口 |
| USER_AGENT | | Chrome 用户代理 |
| BLOCK_FONTS | 1 | 阻止加载网络字体,设置为 0 允许加载字体 |
| ALLOWED_DOMAINS | | 允许渲染的域名,以逗号分隔 |
| CACHE_BACKEND | dummy | 缓存后端,`dummy`,`disk`,`s3` |
| CACHE_LIVE_TIME | 3600 | 磁盘缓存存活秒数 |
| CACHE_ROOT_DIR | /tmp/prerender | 磁盘缓存根目录 |
| S3_SERVER | s3.amazonaws.com | S3 服务器地址 |
| S3_ACCESS_KEY | | S3 访问密钥 |
| S3_SECRET_KEY | | S3 密钥 |
| S3_REGION | | S3 区域 |
| S3_BUCKET | prerender | S3 存储桶名称 |
| SENTRY_DSN | | Sentry DSN,用于异常监控 |
| ENABLE_CIRCUIT_BREAKER | false | 启用断路器 |
| CIRCUIT_BREAKER_FAIL_MAX | 5 | 在断路器打开之前每个浏览器/机器人允许的最大失败次数 |
| CIRCUIT_BREAKER_RESET_TIMEOUT | 60 | 断路器重置超时时间(秒) |

## 配置客户端

请查看原始 NodeJs 版本 [prerender](https://github.com/prerender/prerender#official-middleware) README。

## 许可证

MIT


项目详情


下载文件

下载您平台上的文件。如果您不确定要选择哪个,请了解有关 安装包 的更多信息。

源代码分发

prerender-0.10.0.tar.gz (14.1 kB 查看散列)

上传时间

构建分发

prerender-0.10.0-py3-none-any.whl (17.7 kB 查看散列)

上传于 Python 3

由...