Python selenium

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()
    
posted @ 2021-08-04 10:22  w0000  阅读(61)  评论(0编辑  收藏  举报