欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Python selenium

程序员文章站 2022-07-14 09:52:12
...

selenium

  • selenium 基于浏览器自动化的一个模块

  • 便携的获取网站中动态加载的数据(Ajax)

  • 便携实现模拟登录

  • Google浏览器

  • 实例化浏览器对象 传入浏览器驱动程序

    • bro = webdriver.Chrome(’./chromedriver.exe’)
  • 编写自动操作代码

  • 基于浏览器自动化的操作代码

    • 发起请求:get(url)
    • 标签定位: find系列方法
    • 标签交互: send_keys('xxx)
    • 执行js程序: excute_script(‘jsCode’)
    • 前进,后退: back(),forward()
    • 关闭浏览器: quit()
  • selenium 处理iframe

    • 如果定位的标签是存在iframe标签之中的,则必须切换浏览器标签定位的作用域:
      • bro.switch_to.frame(‘frame’s id’)
  • seleniu 模拟登录

    from selenium import webdriver
    from time import sleep
    
    if __name__ == '__main__':
        bro = webdriver.Chrome('./chromedriver.exe')
        bro.get('https://mail.qq.com/')
        bro.switch_to.frame('login_frame')
        user = bro.find_element_by_id('u')
        password = bro.find_element_by_id('p')
        sleep(1)
        user.send_keys('309519959')
        sleep(1)
        password.send_keys('562')
        sleep(1)
        log_btn = bro.find_element_by_id('login_button')
        log_btn.click()
        sleep(3)
        bro.quit()
    
    • 动作链(拖动):
    from selenium.webdriver import ActionChains
    from selenium import webdriver
    from time import sleep
    if __name__ == '__main__':
        # 实例化浏览器对象 传入浏览器驱动程序
        bro = webdriver.Chrome(executable_path='./chromedriver.exe')
        # 让浏览器发起一个指定url对应请求
        url = 'https://www.runoob.com/try/try.php?filename=jqueryui-api-droppable'
        bro.get(url)
        #切换iframe
        bro.switch_to.frame('iframeResult')
        div = bro.find_element_by_id('draggable')
        #实例化动作链对象
        action = ActionChains(bro)
        #点击和长按
        action.click_and_hold(div)
        for i in range(5):
            #perform 立即执行动作链操作
            #move_by_offset(x,y) x水平,y竖直方向
            action.move_by_offset(17,0).perform()
            sleep(0.5)
        action.release()
        bro.quit()
    
    • 无头浏览器
    from selenium import webdriver
    from time import sleep
    #实现无可视化界面
    from selenium.webdriver.chrome.options import Options
    #实现规避检测
    from selenium.webdriver import ChromeOptions
    
    # #实现无可视化界面的操作
    # chrome_options = Options()
    # chrome_options.add_argument('--headless')
    # chrome_options.add_argument('--disable-gpu')
    
    #实现规避检测
    option = ChromeOptions()
    option.add_experimental_option('excludeSwitches',['enable-automation'])
    
    option.add_argument('--headless')
    option.add_argument('--disable-gpu')
    # option.add_argument('--disable-gpu')
    
    #实现让selenium规避被检测的风险
    bro = webdriver.Chrome(executable_path='./chromedriver.exe',options=option)
    
    #无可视化界面 phantomJs
    bro.get('https://www.baidu.com')
    print(bro.page_source)
    sleep(3)
    bro.quit()
    
    

    github
    https://www.cnblogs.com/w0000/p/15097695.html