zoukankan      html  css  js  c++  java
  • selenium配置全局环境及使用

    动态数据加载

    1.什么是动态数据加载
    2.动态数据加载跟爬虫有啥关系:
        requests模块
        scrapy框架---> 他们在发起请求爬取数据的过程中, 不能够执行JS代码
    3.用到一个东西 --> selenium是一个web端自动化测试框架,
    

    selenium的介绍

    selenium是一个web端自动化测试框架, 程序员可以通过代码来控制浏览器, 比如说打开网页, 关闭浏览器, 点击一下, 比如说拖动, 向下滚动, 向左右滚动
    作用: 帮助抓取动态加载的数据, 避免反爬
    
    

    1.安装模块:

    selenium

    pip install selenium
    

    2.Chrome浏览器驱动下载链接: http://chromedriver.storage.googleapis.com/index.html

    1.在Chrome浏览器获取版本信息,进入链接下载

    2.进入下载与自己系统匹配的版本
    3.将chrome驱动配置到环境变量中,这样使用的时候,不用每次都填写chrome的驱动位置
    4.下载完成以后到 Program files 文件下,在新建一个名为 chromedriver 的文件,将下载的 chromedriver.exe 复制进去, 并复制路径
    5.在我的电脑-->高级-->环境变量-->path编辑-->新建将复制的路径添加

    3.简单实践

    import time
    from selenium import webdriver
    
    browser = webdriver.Chrome()
    browser.get('https://www.baidu.com/')
    
    #  获取百度输入框
    input_tag = browser.find_element_by_id('kw')
    
    #  在输入框输入内容
    input_tag.send_keys('黑洞')
    time.sleep(1)
    
    # 点击'百度一下'
    click_button = browser.find_element_by_id('su')
    click_button.click()
    time.sleep(5)
    

    4.selenium相关的简单操作

    # 如何获取网页的元素
    find_element_by_id('idvalue'): 根据节点的id属性值定位节点
    find_element_by_name(): 根据节点的name属性值定位节点
    find_element_by_class_name(): 根据节点的class属性值来进行定位
    find_element_by_xpath(): 根据xpath定位节点
    find_element_by_css_selector(): css 选择器
    find_element_by_link_text(): 根据超链接文本定位
    find_element_by_partial_link_text(): 根据超链接文本的一部分定位
    
    
    # 节点交互的操作:
    1.输入内容: send_keys()
    2.清空内容: clear()
    3.点击操作: click()
    4.退出浏览器: quit()
    
    
    # 获取网页源码
    browser.page_source  --> 字符串 --> xpath解析
    
    
    # 执行js脚本
    js = 'window.scrollTo(0, document.body.scrollHeight)'  # 滚动一瓶的高度
    browser.execute_script(js)
    js = "alert('你好!!!!')"
    
    
    # 防检测:
    from selenium.webdriver.chrome.options import Options
    options = Options()
    options.add_experimental_option('excludeSwitches', ['enable-automation'])
    
    
  • 相关阅读:
    基于python创建一个简单的HTTP-WEB服务器
    基于python自动化测试平台与虚拟化技术结合的思考
    Net分布式系统之六:微服务之API网关
    Net分布式系统之五:C#使用Redis集群缓存
    Net分布式系统之二:CentOS系统搭建Nginx负载均衡
    Net分布式系统之一:系统整体框架介绍
    .Net微服务架构之运行日志分析系统
    Net分布式系统之七:日志采集系统(1)
    程序员如何选择未来的职业路线
    NET技术公众号已上线
  • 原文地址:https://www.cnblogs.com/Beginner-Y/p/13198609.html
Copyright © 2011-2022 走看看