Skip to content
登录 注册

渲染 JavaScript

SPA 和大量使用 JS 的页面需要真实的浏览器执行环境。Web Scraping API 通过一个标志来处理这一点。

在任意请求中添加 render_js=1。Shifter 会启动一个全新的无头 Chrome 实例,导航到该 URL,并返回渲染后的 DOM。

Terminal window
curl "https://scrape.shifter.io/v1?api_key=YOUR_API_KEY&url=https://example.com&render_js=1"

JS 渲染与静态抓取一样,按每次成功请求 1 个积分计费。没有附加费用。

大多数 SPA 会在特定元素出现后完成加载。使用 wait_for_css 来阻塞,直到该选择器渲染完成:

Terminal window
curl "https://scrape.shifter.io/v1?api_key=YOUR_API_KEY&url=https://shop.example.com&render_js=1&wait_for_css=.product-price"

一旦 .product-price 出现在 DOM 中,请求就会完成,超时(默认 30 秒)则失败。

使用 timeout(以毫秒为单位)来限制浏览器在页面上可花费的总时间:

Terminal window
curl "https://scrape.shifter.io/v1?api_key=YOUR_API_KEY&url=https://slow.example.com&render_js=1&timeout=10000"

这对于抓取加载缓慢的仪表盘很有用,此时你希望获取 10 秒后可见的内容,而不是完整渲染结果。

在捕获之前,使用 js_instructions(URL 编码的 JSON)来滚动、点击或执行任意步骤。常见模式:

滚动以加载无限信息流:

[{"action": "scrollTo", "selector": "footer", "timeout": 5000, "block": "start"}]

在抓取前点击一个按钮:

[{"action": "click", "selector": "button.load-more", "timeout": 3000}]

串联多个步骤:

[
{"action": "click", "selector": "button.accept-cookies"},
{"action": "scrollTo", "selector": "div.results"},
{"action": "wait", "duration": 2000}
]

将该数组作为 URL 编码字符串传入 js_instructions

通过添加 screenshot=1 来获取整页截图,而不是 DOM。响应为二进制 PNG。参见高级功能

  • 静态 HTML 页面(新闻文章、博客文章、RSS 风格内容)
  • JSON API(使用直接抓取,而不是抓取端点)
  • 文件和二进制内容

跳过 render_js 在延迟方面更经济,不过积分消耗相同。