一、selenium的使用:
1、简介:
是一个自动化的工具,可以利用它驱动浏览器执行特定的动作。
2、基本使用:
1 from selenium import webdriver 2 3 from selenium.webdriver.common.by import By 4 from selenium.webdriver.common.keys import Keys 5 from selenium.webdriver.support import expected_conditions as ec 6 from selenium.webdriver.support.wait import WebDriverWait 7 8 #完成浏览器对象的初始化并赋值为browser对象 9 browser=webdriver.Chrome() 10 # browser=webdriver.Edge() 11 try: 12 #访问百度网址,然后获得源代码 13 browser.get('https://www.baidu.com') 14 #根据id来获取节点 15 input=browser.find_element_by_id('kw') 16 input.send_keys('python') 17 input.send_keys(Keys.ENTER) 18 wait=WebDriverWait(browser,10) 19 wait.until(ec.presence_of_all_elements_located((By.ID,'content_left'))) 20 print(browser.current_url) 21 print(browser.get_cookies()) 22 print(browser.page_source) 23 finally: 24 browser.close()
3、获取节点:
(1)获取节点的方法:
find_element_by_id
find_element_by_name
find_element_by_xpath
find_element_by_link_text
find_element_by_partial_link_text
find_element_by_tag_name
find_element_by_class_name
find_element_by_css_selector
(2)获得所有节点:
find_elements_
4、节点交互:
输入文字:send_keys()
清空文字:clear()
按钮点击:click()
5、执行js代码:
1 from selenium import webdriver 2 3 driver=webdriver.Chrome() 4 5 driver.get('https://www.zhihu.com/explore') 6 driver.execute_script('window.scrollTo(0, document.body.scrollHeight)') 7 driver.execute_script('alert("To Bottom")') 8 driver.close()
6、获取节点信息:
(1)首先要先选中节点。
(2)操作:
1 ''' 2 func:执行cs代码 3 ''' 4 5 from selenium import webdriver 6 7 browser=webdriver.Chrome() 8 # 9 # driver.get('https://www.zhihu.com/explore') 10 # driver.execute_script('window.scrollTo(0, document.body.scrollHeight)') 11 # driver.execute_script('alert("To Bottom")') 12 # driver.close() 13 url = 'https://www.zhihu.com/explore' 14 browser.get(url) 15 16 #选中想要的节点 17 # node=browser.find_element_by_id('zh-top-link-logo') 18 # print(node,node.get_attribute('class')) 19 #获取文本值 20 n1=browser.find_element_by_class_name('zu-top-add-question') 21 print(n1.text) 22 23 browser.close()
(3)获取id: .id
获取页面的相对位置: .location
获取标签名: .tag_name
获取节点大小: .size
7、切换frame:
browser.switch_to.frame('framename')
返回到父frame:
browser.switch_to.parent_frame()
8、延时等待:
(1)隐式等待:
忽略
(2)显示等待:
1 from selenium import webdriver 2 from selenium.webdriver.common.by import By 3 from selenium.webdriver.support.ui import WebDriverWait 4 from selenium.webdriver.support import expected_conditions as ec 5 6 browser = webdriver.Chrome() 7 # browser.implicitly_wait(10) 8 # browser.get('https://www.zhihu.com/explore') 9 # input = browser.find_element_by_class_name('zu-top-add-question') 10 # print(input) 11 browser.get('https://www.taobao.com/') 12 wait=WebDriverWait(browser,10) 13 input=wait.until(ec.presence_of_element_located((By.ID,'q'))) 14 button=wait.until(ec.element_to_be_clickable((By.CSS_SELECTOR,'.btn-search'))) 15 print(input,button) 16 browser.close()
9、等待条件:
11、前进和后退:
.back()方法 后退
.forward() 前进
12、cookies:
1 ''' 2 func:cookie操作 3 ''' 4 from selenium import webdriver 5 6 browser=webdriver.Chrome() 7 browser.get('https://www.zhihu.com/explore') 8 #获取cookie信息 9 print(browser.get_cookies()) 10 #添加cookie信息 11 browser.add_cookie({'name': 'name', 'domain': 'www.zhihu.com', 'value': 'germey'}) 12 13 print(browser.get_cookies()) 14 #删除所有的cookie 15 browser.delete_all_cookies() 16 print(browser.get_cookies()) 17 browser.close()
13、选项卡管理:
1 ''' 2 func:选项卡管理 3 ''' 4 import time 5 from selenium import webdriver 6 7 browser = webdriver.Chrome() 8 browser.get('https://www.baidu.com') 9 browser.execute_script('window.open()') 10 print(browser.window_handles) 11 #切换选项卡 12 browser.switch_to_window(browser.window_handles[1]) 13 browser.get('https://www.taobao.com') 14 time.sleep(1) 15 browser.switch_to_window(browser.window_handles[0]) 16 browser.get('https://python.org') 17 browser.close()
14、异常处理: