zoukankan      html  css  js  c++  java
  • Python—selenium模块(浏览器自动化工具)

    selenium可以用来完成浏览器自动化相关的操作,写一些代码制定一些基于浏览器自动化的相关操作(行为动作),当代码执行后,浏览器就会自动触发相关的事件

    安装方法:

    •   pip install selenium
    •   下载对应浏览器的驱动程序
    •   谷歌浏览器驱动下载地址:

    https://chromedriver.storage.googleapis.com/index.html

    https://npm.taobao.org/

    •   根据浏览器版本选择对应的驱动版本(网上查)

    代码流程:

    • 导入模块:from selenium import webdriver
    • 实例化一个浏览器对象:webdriver.Chrome(executable_path='./chromedriver.exe') ,参数为浏览器驱动路径;
    • 写上要访问的网址:bro.get("https://xueqiu.com/")

    浏览器相关操作:

      执行js实现滚轮向下

      移动到页面最底部(如果是动态加载的数据及第一次加载完成的地方):

        js = "window.scrollTo(0,document.body.scrollHeight)"

      定位标签,向标签里写参数 

    tag_input = bro.find_element_by_id('kw')
    tag_input.send_keys('人民币')

    截屏

      bro.save_screenshot('1.png')

    获取页面数据

    获取动态加载的数据:bro.page_source 

      基于xpath获取标签:a_tag = bro.find_element_by_xpath("xpath表达式")

      点击事件:a_tag.click()    单击鼠标左键一下

    网页的前进和后退

    bro.back()   后退

    bro.forward()   前进

    网页前进后退代码

    谷歌无头浏览器

    如不想感知到浏览器操作,可让浏览器在后台操作 

    #谷歌无头浏览器
    from selenium import webdriver
    from time import sleep
    from selenium.webdriver.chrome.options import Options
    # 创建一个参数对象,用来控制chrome以无界面模式打开
    chrome_options = Options()
    chrome_options.add_argument('--headless')
    chrome_options.add_argument('--disable-gpu')
    
    bro = webdriver.Chrome(executable_path='./chromedriver.exe',options=chrome_options)
    bro.get('https://www.baidu.com')
    sleep(2)
    bro.save_screenshot('1.png')
    #标签定位
    tag_input = bro.find_element_by_id('kw')
    tag_input.send_keys('人民币')
    sleep(2)
    
    btn = bro.find_element_by_id('su')
    btn.click()
    sleep(2)
    
    print(bro.page_source)
    bro.quit()
    谷歌无头浏览器代码

    动作链

    如果定位的标签存在于iframe标签之中,则必须经过switch_to操作在进行标签定位

    #动作链
    from selenium import webdriver
    from time import sleep
    from selenium.webdriver import ChromeOptions
    from selenium.webdriver import ActionChains  
    
    option = ChromeOptions()
    option.add_experimental_option('excludeSwitches', ['enable-automation'])
    
    bro = webdriver.Chrome(executable_path='./chromedriver.exe',options=option)
    url = 'https://www.runoob.com/try/try.php?filename=jqueryui-api-droppable'
    bro.get(url=url)
    #如果定位的标签存在于iframe标签之中,则必须经过switch_to操作在进行标签定位
    bro.switch_to.frame('iframeResult')
    source_tag = bro.find_element_by_id('draggable')
    taget_tag = bro.find_element_by_id('droppable')
    #创建一个动作连的对象
    action = ActionChains(bro)
    action.drag_and_drop(source_tag,taget_tag)
    action.perform()
    sleep(3)
    # bro.quit()
    动作链代码展示

      

      

      

  • 相关阅读:
    470. 用 Rand7() 实现 Rand10() 采样
    165. 比较版本号 字符串
    Java 通过属性名称读取或者设置实体的属性值
    双非Java的学习之旅以及秋招路程
    【Unity3D】不可读Texture资源的获取
    java 8 Map 之merge用法
    Jmeter-计数器的应用
    Jmeter-集合点【同步定时器】应用
    2. Go并发编程--GMP调度
    Go序列化嵌套结构体
  • 原文地址:https://www.cnblogs.com/jayxuan/p/10836388.html
Copyright © 2011-2022 走看看