一 . 基本使用
# pip install selenium -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com from selenium import webdriver # # 驱动浏览器 from selenium.webdriver.common.by import By #选择器 from selenium.webdriver.common.keys import Keys #按键 from selenium.webdriver.support.wait import WebDriverWait #等待页面加载完毕,寻找某些元素 from selenium.webdriver.support import expected_conditions as EC ##等待指定标签加载完毕 # 1,驱动浏览器 browser = webdriver.Chrome() # 2,请求页面 --返回的数据封装在了browser对象里,不需要额外的变量接收 browser.get('https://www.baidu.com') #调用浏览器驱动访问站点 # 3,拿到输入框 text_input = browser.find_element(By.ID,'kw') # 4,向输入框中写入内容 text_input.send_keys('爬虫') # 5,按下回车按钮 text_input.send_keys(Keys.ENTER) # # 等待事件 -- 怕网速慢 wait = WebDriverWait(browser,100) # 参数1:浏览器对象 参数2:时间(秒) # # 等待某元素出现 presence_of_element_located()传入的参数格式是一个元组 wait.until(EC.presence_of_element_located((By.ID,'result_tts_player'))) print(browser.current_url) #查看url print(browser.get_cookies()) #查看cookie print(browser.page_source) #查看源代码 browser.close() # 关闭浏览器
二,声明不同浏览器对象
from selenium import webdriver browser = webdriver.Chrome() browser = webdriver.Firefox() browser = webdriver.PhantomJS() browser = webdriver.Safari()
三,访问页面
from selenium import webdriver # 声明Chrome浏览器对象 browser = webdriver.Chrome() # 请求页面 browser.get('https://www.taobao.com') print(browser.page_source) # 获取网页源代码 browser.close() # 关闭当前页面
四,查找元素
查找方法
- find_element_by_id 根据id属性来定位
- find_element_by_name 根据name元素来定位
- find_element_by_xpath 根据xpath语法来定位
- find_element_by_tag_name 根据标签名来定位
- find_element_by_class_name 根据class的名字来定位
- find_element_by_css_selector 根据css选择器来定位
- 以下两种方法都是用来的定位超链接的,也就是对应html页面中的a标签,括号里传入的值就是a标签中的超链接文字
- 两者的区别在于一个是完整的超链接文字,一个是可以只写部分超链接文字
- find_element_by_link_text 需要完整的超链接文字
- find_element_by_partial_link_text 可以只写部分超链接文字
源码经过修改之后的写法
- find_element(By.ID,“id”) 根据id属性来定位
- find_element(By.NAME,“name”) 根据name元素来定位
- find_element(By.XPATH,“xpath语法”) 根据xpath语法来定位
- find_elemnt(By.TAG_NAME,“input”) 根据标签名来定位
- find_element(By.CLASS_NAME,“classname”) 根据class的名字来定位
- find_element(By.CSS_SELECTOR,“#id”) 根据css选择器来定位
- find_element(By.LINK_TEXT,“text”) 根据文本属性
1,单个元素
from selenium import webdriver browser = webdriver.Chrome() browser.get("http://www.baidu.com") browser.find_element(By.LINK_TEXT,"新闻").click() # 通过.click()点击目标链接
from selenium import webdriver from selenium.webdriver.common.by import By #选择器 browser = webdriver.Chrome() browser.get('https://taobao.com') #通过元素ID查找 # by_id = browser.find_element(By.ID,'q') # by_id.send_keys('美食') # print(by_id) # # 通过css选择器查找 # css_select = browser.find_element(By.CSS_SELECTOR,'#q') # css_select.send_keys('美食') # # 通过xpath查找 # xpath = browser.find_element(By.XPATH,'//*[@id="q"]') # xpath.send_keys('美食') # browser.close()
2,多个元素
- find_elements(By.ID,“id”) 根据id属性来定位
- find_elements(By.NAME,“name”) 根据name元素来定位
- find_elements(By.XPATH,“xpath语法”) 根据xpath语法来定位
- find_elemnts(By.TAG_NAME,“input”) 根据标签名来定位
- find_elements(By.CLASS_NAME,“classname”) 根据class的名字来定位
- find_elements(By.CSS_SELECTOR,“#id”) 根据css选择器来定位
- find_elements(By.LINK_TEXT,“text”) 根据文本属性
from selenium import webdriver browser = webdriver.Chrome() browser.get('https://www.taobao.com') elements = browser.find_elements(By.CSS_SELECTOR,'.service-bd li') print(elements) # 以列表形式返回 for i in elements: print(i)