zoukankan      html  css  js  c++  java
  • python 爬虫_Selenium详细用法

    Selenium
    自动化测试工具,支持多种浏览器,在爬虫中主要解决JS的渲染问题
    1.基本使用

            from selenium import webdriver
            from selenium.webdriver.common.by import By
            from selenium.webdriver.common.keys import Keys
            from selenium.webdriver.support import expected_conditions as EC
            from selenium.webdriver.support.wait import WebDriverWait
    browser = webdriver.chrome()    #声明浏览器对象
                try: 
                    browser.get('http://www.baidu.com')     #访问页面
                input=browser.find_element_by_id('kw')    #查找元素
                input.send_keys('Python')    #输入Python
                input.send_key(Keys.ENTER)    #输入enter
                wait=WebDriverWait(browser,10)
                wait.until(EC.presence_of_element_located(By.ID,'content_left'))    #找到对应的元素
                print(browser.current_url)
                print(browser.get_cookies())
                print(browser.page_source)
            finally:
                browser.close()

    2.查找方式
    单个元素:

    browser.find_element_by_id('q') == browser.find_element_by_css_selector('#q') == browser.find_element_by_css_xpath('//*[@id='1']')

    多个元素:
      browser.find_element(By.ID,'q')

    3. 元素交互操作: https://selenium-python-zh.readthedocs.io/en/latest/

            input.send_key('ssss')
            time.sleep(1)
            input.clear
            input.send_key('cccc')
            button=browser.find_element_by_class_name('tttt')
            button.click

    4. 交互动作,区别于元素操作

            from selenium import webdriver
            from selenium.webdriver import ActionChains
            browser = webdriver.chrome()
            url = 'www.ddddsdsdsds.com'    
            browser.get(url)
            browser.switch_to.frame('模块名')
            source=browser.find_element_by_css_selector('#draggable') #找到两个模块
            target=browser.find_element_by_css_selector('droppable')
            actions=ActionChains(browser)
            actions.drag_and_drop(source,target) #执行操作
            actions.perform()

    5. 执行javaScript

            from selenium import webdriver
            browser = webdriver.chrome()    
            browser.get('http://www.baidu.com')     
            browser.execute_script('具体的js的操作')    
            browser.execute_script('可以添加提示')

    6. 获取元素信息

            from selenium import webdriver
            from selenium.webdriver import ActionChains
            browser = webdriver.chrome()
            url = 'www.ddddsdsdsds.com'    
            browser.get(url)    
            logo=browser.find_element_by_id('模块名')
            print(logo.get-attributes('class'))    #获取属性
            print(logo.text)    #获取文本值

    7. Frame

            browser.switch_to.frame('fram_id') #切换到指定的frame
            browser.switch_to.parent_frame()     #切换到父frame

    9. 前进后退:

            browser.back()
            browser.sleep()
            browser.forward()
            print(browser.get_cookies) #获取cookies

    10. 选项卡管理

            browser.execute_script('windows.open')    #新开一个选项卡
            browser.switch_to_window(browser.windo_handles[1]) #切换到第一个选项卡

    8. 异常处理:
    有异常问题,直接打印
      例子: except TimeoutException:
          print('Timeout')

  • 相关阅读:
    Leetcode Best Time to Buy and Sell Stock II
    Leetcode Shortest Word Distance III
    Leetcode Shortest Word Distance II
    Leetcode Shortest Word Distance
    牛客多校第四场 J Free 最短路
    牛客多校第四场 A meeting 树的半径
    hdu多校第二场1008(hdu6598) Harmonious Army 最小割
    hdu多校第二场1011 (hdu6601) Keen On Everything But Triangle 主席树
    hdu多校第二场 1010 (hdu6600)Just Skip This Problem
    hdu多校第二场 1005 (hdu6595) Everything Is Generated In Equal Probability
  • 原文地址:https://www.cnblogs.com/spencersun/p/9577966.html
Copyright © 2011-2022 走看看