• python | 爬虫笔记(七)- 动态渲染页面抓取Selenium


    JavaScript 动态渲染的页面不止 Ajax 这一种
    另外有的ajax渲染接口含有很多加密参数,难以直接找出其规律
    通过模拟浏览器运行的方式来实现,Selenium、Splash、PyV8、Ghost 等

    7.1 Selenium的使用

    自动化测试工具,支持多种浏览器。爬虫中主要用来解决js渲染问题
    用 Selenium 来驱动浏览器加载网页的话,可以直接拿到JavaScript 渲染的结果了,加密不用再担心。
    1- 声明浏览器对象
    browser = webdriver.Chrome()
    2- 访问页面
    browser.get('https://www.taobao.com')
    3- 查找节点
    input_first = browser.find_element(By.ID, 'q') #单个节点
    lis = browser.find_elements_by_css_selector('.service-bd li')
    4- 节点交互
    ...
     
    5- 获取节点信息
    通过 page_source 属性可以获取网页的源代码,获取源代码之后就可以使用解析库如正则、BeautifulSoup、PyQuery 等来提取信息了。
    不过 Selenium 已经提供了选择节点的方法,返回WebElement 类型,可以通过相关方法或属性来解析
     
    6- 获取属性
    7- 切换frame
     
    8- 延时等待
    确保节点已经加载出来
    - 隐式等待
    当查找节点而节点并没有立即出现的时候,隐式等待将等待一段时间再查找 DOM,默认的时间是 0。 implicitly_wait() 
    - 显式等待
    指定好要查找的节点,然后指定一个最长等待时间。如果在规定时间内加载出来了这个节点,那就返回查找的节点,如果到了规定时间依然没有加载出该节点,则会抛出超时异常。
     

    ##本系列内容为《python3爬虫开发实战》学习笔记。本系列博客列表如下:

    (零)学习路线

    (一)开发环境配置

    (二)爬虫基础

    (三)基本库使用

    (四)解析库使用

    (五)数据存储

    (六)Ajax数据爬取

    (七)动态渲染页面爬取Selenium

    持续更新...

    对应代码请见:..

     

  • 相关阅读:
    Linux工具-curl
    常用工具-Postman
    HTTP头部信息
    HTTP状态码
    HTTP/HTTP2协议
    HTTP协议
    常用的服务端口
    三次握手,四次挥手和抓包工具
    路由表
    TCP/IP协议详解
  • 原文地址:https://www.cnblogs.com/geo-will/p/9717405.html
Copyright © 2020-2023  润新知