selenium 是一個用於Web應用程序測試的工具。Selenium測試直接運行在瀏覽器中,就像真正的用戶在操做同樣。支持的瀏覽器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera等。這個工具的主要功能包括:測試與瀏覽器的兼容性——測試你的應用程序看是否可以很好得工做在不一樣瀏覽器和操做系統之上。測試系統功能——建立迴歸測試檢驗軟件功能和用戶需求。支持自動錄製動做和自動生成 .Net、Java、Perl等不一樣語言的測試腳本。css
selenium能夠用於爬蟲,用於爬蟲的目的是繞過大多數js加密和js渲染問題html
requests是向服務器發送請求後,對返回的網頁源代碼進行解析,對於ajax加載須要更深的功力,大多數網站會經過JS來作反爬python
selenium是模仿操做瀏覽器打開頁面,並對F12內的網頁代碼進行解析------>比requests更粗暴,你網頁上顯示啥,就能獲取啥數據web
第一步:安裝selenium模塊包ajax
pip install selenium 或者setting裏面安裝,裝不上就掛鏡像chrome
第二步:下載瀏覽器驅動 ------> 我是谷歌,因此下載的是Chromedriverapi
地址:http://chromedriver.storage.googleapis.com/index.html瀏覽器
注意使用的瀏覽器版本和驅動要對應,或者最接近的一個服務器
將下載的驅動解壓後,放置在python目錄下Scripts文件夾內(和pip一個路徑),若是沒有放置在這裏,那麼每次調用須要寫明驅動所在絕對路徑。工具
第三步:檢查確認上述均爲成功步驟
新建項目鍵入以下代碼
1 from selenium import webdriver 2 driver = webdriver.Chrome()
若是能自動彈出一個瀏覽器窗口,並顯示瀏覽器被自動化軟件控制,即成功。
導入模塊,通常是導入webdriver模塊,用於調用瀏覽器驅動,控制瀏覽器
from selenium import webdriver
打開瀏覽器,或者稱做 初始化程序(簡單點,就是經過瀏覽器打開一個空白窗口)
用變量driver保存該程序句柄,以方便調用
driver = webdriver.Chrome()
打開網頁,好比打開百度
driver.get(url='www.baidu.com')
關閉頁面
# 關閉瀏覽器 driver.quit() # 關閉當前選項卡 driver.close()
selenium是解析F12的網頁代碼,是通過JS渲染的,那麼從中尋找咱們須要的目標,是咱們必須掌握的內容,如何定位到元素?
# dirver就至關因而F12的所有內容 # 在其中經過id定位()內參數爲目標標籤的id值 driver.find_element_by_id() # 在其中經過name定位,()內參數爲目標標籤的name值 find_element_by_name() # 在其中經過class name定位,()內參數爲目標標籤的class值 find_element_by_class_name() # 在其中經過tag_name定位,()內參數爲目標標籤的標籤名 find_element_by_tag_name() # 在其中經過超連接文本定位,()內參數爲目標連接的文本--->精確文本才能定位 find_element_by_link_text() # 在其中經過超連接文本定位,()內參數爲目標連接的文本--->模糊文本便可定位 find_element_by_partial_link_text() # 在其中經過xpath定位,()內參數爲目標標籤的xpath路徑 find_element_by_xpath() # 在其中經過css_selector定位,()內參數爲目標標籤的css_selectors值 find_element_by_css_selector()
上述方法中element單詞是單數,因此他找到第一個目標後,就不找了,若是要找到多個,就把他改爲複數elements,返回也會變成一個列表
通常狀況下,咱們都是經過標籤訂位,而後獲取文本內容,一樣,咱們也能夠反向操做,經過文本內容來定位標籤
# 精肯定位 下例中'文本內容'按照實際狀況修改 driver.find_element_by_xpath("//*[text()='文本內容']") # 模糊定位 下例中'文本內容'按照實際狀況修改,文本能夠只有一部分 driver.find_element_by_xpath("//*[contains(text(),'文本內容')]")
使用是確定要用的,好比定位到輸入框,怎麼輸入文字,定位到肯定按鈕,怎麼按下去?
常見的就是輸入和點擊
輸入
# 定位到input輸入框 inp = driver.find_element_by_xpath('//input')
這時候,咱們把input輸入框位置的句柄保存爲inp變量
inp.send_keys('輸入的內容')
send_keys就是向某個標籤發送數據,往input框發送數據,就是在輸入框中填寫內容
點擊
# 定位到一個button按鈕 btn = driver.find_element_by_xpath('//button')
btn.click()
注意,這裏不必定非得定位到button按鈕才能點擊,只要你在解析網站的時候,你所選的目標標籤能夠被點擊就行
總結下,首先要獲取目標標籤位置,而後在進行方法操做,元素定位是最重要的
補充一個知識點,輸入框的清除,在實際操做中,咱們常常須要反覆使用搜索框來搜索內容,就須要清除上一次輸入的內容,固然,咱們能夠從新刷新網頁,染輸入框總體從新加載,可是咱們也有專門方法
inp.clear() 這個方法能夠將輸入框中內容清空