Python?selenium模塊的安裝和配置教程
一、selenium的安裝以及簡單應(yīng)用
我們以谷歌瀏覽器的chromedriver為例
1、在Python虛擬環(huán)境中安裝selenium模塊
pip/pip3 install selenium
2、下載版本符合的webdriver
以chrome谷歌瀏覽器為例
查看谷歌瀏覽器的版本
鼠標(biāo)點(diǎn)擊右上角的豎排的三個(gè)點(diǎn),然后選擇“幫助”,選擇“關(guān)于 Google Chrome”,進(jìn)去之后即可查看谷歌瀏覽器的版本
訪問下載chromedriver網(wǎng)站
訪問chromedriver下載地址,點(diǎn)擊進(jìn)入不同版本的chromedriver下載頁面
點(diǎn)擊notes.txt進(jìn)入版本說明頁面
查看chrome和chromedriver匹配的版本
根據(jù)操作系統(tǒng)下載正確版本的chromedriver
解壓壓縮包后獲取python代碼可以調(diào)用的谷歌瀏覽器的webdriver可執(zhí)行文件
- windows為 chromedriver.exe
- linux和macos為 chromedriver
chromedriver環(huán)境的配置
- windows環(huán)境下需要將 chromedriver.exe 所在的目錄設(shè)置為path環(huán)境變量中的路徑
- linux/mac環(huán)境下,將 chromedriver 所在的目錄設(shè)置到系統(tǒng)的PATH環(huán)境值中
3、chromedriver環(huán)境配置的教程
windows環(huán)境下將 chromedriver.exe 所在的目錄設(shè)置為path環(huán)境變量中的路徑的過程
鼠標(biāo)右鍵點(diǎn)擊“Google Chrome” ,然后點(diǎn)擊“打開文件所在位置”復(fù)制 chrome.exe 所在的文件路徑
接著打開“控制面板” 搜索輸入 “環(huán)境變量” 并搜索,然后點(diǎn)擊 “編輯系統(tǒng)環(huán)境變量”
二、selenium的簡單使用
Selenium是一個(gè)Web的自動(dòng)化測試工具,最初是為網(wǎng)站自動(dòng)化測試而開發(fā)的。
Selenium 可以直接調(diào)用瀏覽 器,它支持所有主流的瀏覽器(包括PhantomJS這些無界面的瀏覽器),可以接收指令,讓瀏覽器自動(dòng)加載頁 面,獲取需要的數(shù)據(jù),甚至頁面截屏等。
我們可以使用selenium很容易完成之前編寫的爬蟲,接下來我們就來 看一下selenium的運(yùn)行效果
接下來我們就通過代碼來模擬百度搜索(展示效果)
import time from selenium import webdriver # 通過指定chromedriver的路徑來實(shí)例化driver對(duì)象,chromedriver放在當(dāng)前目錄。 # driver = webdriver.Chrome(executable_path='./chromedriver') # 這里的chromedriver已經(jīng)添加環(huán)境變量 driver = webdriver.Chrome() # 控制瀏覽器訪問url地址 driver.get("https://www.baidu.com/") time.sleep(3) # 在百度搜索框中搜索'python' driver.find_element_by_id('kw').send_keys('python') # 點(diǎn)擊'百度搜索' driver.find_element_by_id('su').click() time.sleep(6) # 退出瀏覽器 driver.quit()
運(yùn)行結(jié)果
webdriver.Chrome(executable_path='./chromedriver') 中executable參數(shù)指定的是下載好的
chromedriver文件的路徑
driver.find_element_by_id('kw').send_keys('python') 定位id屬性值是'kw'的標(biāo)簽,并向其中輸入字符 串'python'
driver.find_element_by_id('su').click() 定位id屬性值是su的標(biāo)簽,并點(diǎn)擊
click函數(shù)作用是:觸發(fā)標(biāo)簽的js的click事件
三、selenium提取數(shù)據(jù)
1、driver對(duì)象常用的屬性和方法
在使用selenium過程中,實(shí)例化driver對(duì)象后,driver對(duì)象有一些常用的屬性和方法
- driver.page_source 獲取當(dāng)前標(biāo)簽頁瀏覽器渲染之后的網(wǎng)頁源代碼
- driver.current_url獲取當(dāng)前標(biāo)簽頁的url
- driver.close() 關(guān)閉當(dāng)前標(biāo)簽頁,如果只個(gè)一個(gè)標(biāo)簽頁則關(guān)閉整個(gè)瀏覽器
- driver.quit() 關(guān)閉瀏覽器
- driver.forward() 頁面前進(jìn)
- driver.back() 頁面后退
- driver.screen_shot(img_name) 頁面截圖
示例
打印當(dāng)前標(biāo)簽頁的url
import time from selenium import webdriver driver = webdriver.Chrome() # 控制瀏覽器訪問url地址 driver.get("https://www.baidu.com/") time.sleep(3) # 打印當(dāng)前標(biāo)簽頁的url print(driver.current_url) driver.quit()
運(yùn)行結(jié)果:
2、driver對(duì)象定位標(biāo)簽元素獲取標(biāo)簽對(duì)象的方法
在selenium中可以通過多種方式來定位標(biāo)簽,返回標(biāo)簽元素對(duì)象
方式 | 功能 |
---|---|
find_element_by_id | 返回一個(gè)元素 |
find_element(s)_by_class_name | 根據(jù)類名獲取元素列表 |
find_element(s)_by_name | 根據(jù)標(biāo)簽的name屬性值返回包含標(biāo)簽對(duì)象元素的列表 |
find_element(s)_by_xpath | 返回一個(gè)包含元素的列表 |
find_element(s)_by_link_text | 根據(jù)連接文本獲取元素列表 |
find_element(s)_by_partial_link_text | 根據(jù)鏈接包含的文本獲取元素列表 |
find_element(s)_by_tag_name; | 根據(jù)標(biāo)簽名獲取元素列表 |
find_element(s)_by_css_selector | 根據(jù)css選擇器來獲取元素列表 |
注意
find_element和find_elements的區(qū)別:
- 多了個(gè)s就返回列表,沒有s就返回匹配到的第一個(gè)標(biāo)簽對(duì)象
- find_element匹配不到就拋出異常,find_elements匹配不到就返回空列表
by_link_text 和 by_partial_link_tex 的區(qū)別:全部文本和包含某個(gè)文本
以上函數(shù)的使用方法:
driver.find_element_by_id('id_str')
id_str是id值
示例
接下來我們就通過代碼來模擬百度搜索(具體講解)
首先我們先打開百度頁面,然后點(diǎn)擊網(wǎng)頁檢查 ,定位搜索框,可以看見搜索框的input標(biāo)簽的id值為kw
- 于是開始編寫基礎(chǔ)代碼
- 通過driver.get()獲取網(wǎng)頁
- 通過find_element_by_id('kw')定位搜索框
- 通過.send_keys('python')向搜索框輸入搜索信息
import time from selenium import webdriver driver = webdriver.Chrome() # 控制瀏覽器訪問url地址 driver.get("https://www.baidu.com/") time.sleep(3) # 在百度搜索框中搜索'python' driver.find_element_by_id('kw').send_keys('python')
再定位搜索按鈕:“百度一下” ,其id值為su
完善代碼,通過 .click() 實(shí)現(xiàn)點(diǎn)擊搜索
import time from selenium import webdriver driver = webdriver.Chrome() # 控制瀏覽器訪問url地址 driver.get("https://www.baidu.com/") time.sleep(3) # 在百度搜索框中搜索'python' driver.find_element_by_id('kw').send_keys('python') # 點(diǎn)擊'百度搜索' driver.find_element_by_id('su').click() time.sleep(6) # 退出瀏覽器 driver.quit()
運(yùn)行結(jié)果
3、標(biāo)簽對(duì)象提取文本內(nèi)容和屬性值
find_element僅僅能夠獲取元素,不能夠直接獲取其中的數(shù)據(jù),如果需要獲取數(shù)據(jù)需要使用以下方法
對(duì)元素執(zhí)行點(diǎn)擊操作: element.click()
對(duì)定位到的標(biāo)簽對(duì)象進(jìn)行點(diǎn)擊操作
向輸入框輸入數(shù)據(jù): element.send_keys(data)
對(duì)定位到的標(biāo)簽對(duì)象輸入數(shù)據(jù)
獲取文本: element.text
通過定位獲取的標(biāo)簽對(duì)象的 text 屬性,獲取文本內(nèi)容
獲取屬性值: element.get_attribute("屬性名")
通過定位獲取的標(biāo)簽對(duì)象的 get_attribute 函數(shù),傳入屬性名,來獲取屬性的值
獲取 “百度一下”搜索按鈕的value屬性值
import time from selenium import webdriver driver = webdriver.Chrome() # 控制瀏覽器訪問url地址 driver.get("https://www.baidu.com/") time.sleep(3) # 點(diǎn)擊'百度搜索',用ele變量接受獲取的元素 ele = driver.find_element_by_id('su') print(ele.get_attribute('value')) time.sleep(6) # 退出瀏覽器 driver.quit()
運(yùn)行結(jié)果
四、selenium無頭模式
我們知道,當(dāng)我們利用 dirver.get() 獲取網(wǎng)頁時(shí)會(huì)自動(dòng)打開一個(gè)網(wǎng)頁,但是有時(shí)候我們可能不需要通過打開瀏覽器獲取數(shù)據(jù),于是就可以通過給driver對(duì)象設(shè)置無頭模式 。
# 給driver對(duì)象設(shè)置無頭模式 op = webdriver.ChromeOptions() op.add_argument('--headless') driver = webdriver.Chrome(options=op)
以上就是Python selenium模塊的安裝和配置教程的詳細(xì)內(nèi)容,更多關(guān)于Python selenium模塊的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python實(shí)現(xiàn)打印實(shí)心和空心菱形
今天小編就為大家分享一篇Python實(shí)現(xiàn)打印實(shí)心和空心菱形,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-11-11python+selenium實(shí)現(xiàn)登錄賬戶后自動(dòng)點(diǎn)擊的示例
本篇文章主要介紹了python+selenium實(shí)現(xiàn)登錄賬戶后自動(dòng)點(diǎn)擊的示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-12-12利用python3篩選excel中特定的行(行值滿足某個(gè)條件/行值屬于某個(gè)集合)
這篇文章主要給大家介紹了關(guān)于利用python3篩選excel中特定的行(行值滿足某個(gè)條件/行值屬于某個(gè)集合)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09Python使用正則表達(dá)式分割字符串的實(shí)現(xiàn)方法
今天小編就為大家分享一篇Python使用正則表達(dá)式分割字符串的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-07-07用python實(shí)現(xiàn)一幅春聯(lián)實(shí)例代碼
大家好,本篇文章主要講的是用python實(shí)現(xiàn)一幅春聯(lián)實(shí)例代碼,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下2022-01-01深入解析Python中函數(shù)的參數(shù)與作用域
這篇文章主要介紹了Python中函數(shù)的參數(shù)與作用域,是Python入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2016-03-03pyqt5與matplotlib的完美結(jié)合實(shí)例
今天小編就為大家分享一篇pyqt5與matplotlib的完美結(jié)合實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-06-06