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')

原文地址:https://www.cnblogs.com/spencersun/p/9577966.html