[Python] Splash,一种替代无头Chrome的抓取浏览器


目录

  • 什么是飞溅
  • 飞溅安装
  • HTTP API

    • render.html
    • render.png
    • render.jpeg
    • render.har
    • render.json
    • 执行
  • 参考

什么是飞溅

Scrapy的开发者scrapinghub开发的无头浏览器。您也可以通过使用scrapy-splash模块来使用Scrapy。您可以做的是

  • 应用JavaScript后获取HTML,页面截图等
  • 获取HAR格式的渲染信息
  • 并行处理多页
  • 将自己的JavaScript代码应用于页面
  • 编写脚本以供Lua浏览

例如,

飞溅安装

  • 安装泊坞窗

  • 拉泊坞窗图片
  • 1
    2
    3
    4
    # Linux
    sudo docker pull scrapinghub/splash
    # Mac
    docker pull scrapinghub/splash

    3.创建并启动容器

    1
    2
    3
    4
    # Linux
    sudo docker run -it -p 8050:8050 scrapinghub/splash
    # Mac
    docker run -it -p 8050:8050 scrapinghub/splash

    访问

    http://本地主机:8050 /并确认启动

    *以Ctrl-C

    结尾

    HTTP API

    使用

    Splash,您可以使用HTTP API轻松获取页面信息。这是一个示例,但是如果您想了解更多详细信息,请参阅官方文档。

    render.html

    获取页面html

    1
    2
    3
    4
    5
    6
    7
    8
    import requests

    url = 'https://qiita.com/derodero24'
    res = requests.get('http://localhost:8050/render.html',
                       params={'url': url, 'wait': 0.5})

    with open('test.html', 'wb') as f:
        f.write(res.content)

    选件(部分)

    • url:显示的URL

    • timeout:渲染超时[秒]。 (默认值为30)默认最大值为90秒,但是启动Splash时,可以通过命令行选项--max-timeout覆盖它。

    • wait:加载页面后的等待时间[秒](默认为0)。必须小于timeout的值。

    • js_source:页面中执行的JavaScript代码

    • viewport:浏览器显示大小,"