For the complete documentation index, see llms.txt. This page is also available as Markdown.

JavaScript 渲染

了解你可以在请求中包含的请求头,以获取完全渲染的数据,并将其保存为 HTML 文件或 PNG 截图。

如果你要抓取的页面需要加载 JavaScript 以将所有所需数据动态加载到 DOM 中,你可以不自己设置和使用无头浏览器,而是包含 "X-Oxylabs-Render: html" 请求头到你的请求中。所有包含此请求头的请求都会被完整渲染,所有数据将根据传入的参数存储为 HTML 文件或 PNG 截图。

JavaScript 渲染抓取页面所需时间更长。使用 JavaScript 渲染时,请将客户端超时值设置为 180 秒。

此参数有两个可用值:

  • html (渲染后页面的 HTML)

  • png (可保存为 PNG 的原始字节)

代码示例

curl -k -v -x https://unblock.oxylabs.io:60000 \
-U 'USERNAME:PASSWORD' \
'https://ip.oxylabs.io/location' \
-H 'X-Oxylabs-Render: html'
import requests

# 在此使用你的网页解锁器凭据。
USERNAME, PASSWORD = 'YOUR_USERNAME', 'YOUR_PASSWORD'

# 定义代理字典。
代理 = {
  'http': f'http://{USERNAME}:{PASSWORD}@unblock.oxylabs.io:60000',
  'https': f'https://{USERNAME}:{PASSWORD}@unblock.oxylabs.io:60000',
}

headers = {
    'X-Oxylabs-Render': 'html'
}

response = requests.get(
    'https://ip.oxylabs.io/location',
    verify=False,  # 需要忽略证书
    代理=代理,
    headers=headers,
)

# Print result page to stdout
print(response.text)

# Save returned HTML to result.html file
with open('result.html', 'w') as f:
    f.write(response.text)

抓取网站 HTML

在这个示例中,我们将渲染 YouTube 首页并抓取页面内容。通常,如果在不使用 JavaScript 渲染的情况下使用网页解锁器,YouTube 首页会像这样:

未使用 JavaScript 渲染的 YouTube 页面示例

添加 "X-Oxylabs-Render: html" 请求头,正如下面示例所示,将启用 JavaScript 渲染并返回渲染后页面的 HTML:

在浏览器中打开的 HTML 文件应如下所示:

获取完全渲染页面的截图

要获取 PNG 格式的截图而不是页面 HTML,需要提供 "X-Oxylabs-Render: png" 请求头。

响应将包含图像的原始字节,这些字节可保存为 PNG 格式,并可按如下示例打开:

以 PNG 格式截图的 YouTube 页面示例

在特定页面上强制渲染

为了成功抓取,由于动态内容,某些特定域名的页面类型需要渲染。即使用户未明确设置,我们的系统也会自动强制对这些页面进行渲染。

在抓取以下页面时,我们希望用户充分了解这一点:

这种方法可提供尽可能好的抓取体验,确保这些具有挑战性的页面上的数据准确性和可靠性。

如果你希望禁用渲染,请发送不带值的渲染请求头

这有帮助吗?