第7章 动态渲染页面爬取

本章我们介绍下Selenium和SPlash的用法

7.1 Selenium的使用

Selenium是一个自动化测试工具,利用它我们可以驱动浏览器执行特定的动作,如点击、下拉等等操作。同事还可以获取浏览器当前呈现的页面的源代码,做到可见即可爬。

7.1.1 准备工作

Chrome为例讲解Selenium

7.1.2 基本使用

Selenium有怎样的功能
运行代码,自动弹出Chrome浏览器。
首先会跳转到百度,然后在搜索框中输入,接着跳转到搜索结果页。

7.1.3 声明浏览器对象

Selenium支持非常多的浏览器,如Chrome、FIrefox、Edge等,还有android、BlackBerry端的浏览器。

7.1.4 访问页面

    from selenium import webdriver
    browser = webdriver.Chrome()
    browser.get('https://www.taobao.com')
    print(browser.page_source)
    browser.close()
    

运行Chrome浏览器并且自动访问了淘宝,然后控制台数据了淘宝页面的源代码,随后浏览器关闭。

7.1.5 查找节点

Selenium可以驱动浏览器完成各种操作,比如填充表单、模拟点击等。

  • 单个节点
  • 多个节点
  • 节点交互

7.1.6 节点交互

7.1.7 动作链

7.1.8 执行JavaScript

7.1.9 获取节点信息

7.1.10 切换Frame

7.1.11 延时等待

7.1.12 前进后退

7.1.13 Cookies

7.1.14 选项卡管理

7.1.15 异常处理

7.1.16 结语

7.2 Splash

Splash是一个java渲染服务,是一个带有HTTP API的轻量级浏览及,同时它对接了Python中的Twisted和QT库。利用它,我们同样可以实现同台渲染页面的抓取。

利用Splash 可以实现:

  • 异步方式处理多个网页渲染过程;
  • 获取渲染后的页面的源代码或截图。
    * 通过图案比图片渲染或者使用Adblock规则来加快页面渲染速度;

7.3 Splash负载均衡配置

7.4 使用Selenium爬取淘宝商品