Python?selenium模塊的安裝和配置教程
一、selenium的安裝以及簡(jiǎn)單應(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)去之后即可查看谷歌瀏覽器的版本


訪問(wèn)下載chromedriver網(wǎng)站
訪問(wèn)chromedriver下載地址,點(diǎn)擊進(jìn)入不同版本的chromedriver下載頁(yè)面

點(diǎn)擊notes.txt進(jìn)入版本說(shuō)明頁(yè)面

查看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)境變量中的路徑的過(guò)程
鼠標(biāo)右鍵點(diǎn)擊“Google Chrome” ,然后點(diǎn)擊“打開(kāi)文件所在位置”復(fù)制 chrome.exe 所在的文件路徑

接著打開(kāi)“控制面板” 搜索輸入 “環(huán)境變量” 并搜索,然后點(diǎn)擊 “編輯系統(tǒng)環(huán)境變量”




二、selenium的簡(jiǎn)單使用
Selenium是一個(gè)Web的自動(dòng)化測(cè)試工具,最初是為網(wǎng)站自動(dòng)化測(cè)試而開(kāi)發(fā)的。
Selenium 可以直接調(diào)用瀏覽 器,它支持所有主流的瀏覽器(包括PhantomJS這些無(wú)界面的瀏覽器),可以接收指令,讓瀏覽器自動(dòng)加載頁(yè) 面,獲取需要的數(shù)據(jù),甚至頁(yè)面截屏等。
我們可以使用selenium很容易完成之前編寫(xiě)的爬蟲(chóng),接下來(lái)我們就來(lái) 看一下selenium的運(yùn)行效果
接下來(lái)我們就通過(guò)代碼來(lái)模擬百度搜索(展示效果)
import time
from selenium import webdriver
# 通過(guò)指定chromedriver的路徑來(lái)實(shí)例化driver對(duì)象,chromedriver放在當(dāng)前目錄。
# driver = webdriver.Chrome(executable_path='./chromedriver')
# 這里的chromedriver已經(jīng)添加環(huán)境變量
driver = webdriver.Chrome()
# 控制瀏覽器訪問(wèn)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過(guò)程中,實(shí)例化driver對(duì)象后,driver對(duì)象有一些常用的屬性和方法
- driver.page_source 獲取當(dāng)前標(biāo)簽頁(yè)瀏覽器渲染之后的網(wǎng)頁(yè)源代碼
- driver.current_url獲取當(dāng)前標(biāo)簽頁(yè)的url
- driver.close() 關(guān)閉當(dāng)前標(biāo)簽頁(yè),如果只個(gè)一個(gè)標(biāo)簽頁(yè)則關(guān)閉整個(gè)瀏覽器
- driver.quit() 關(guān)閉瀏覽器
- driver.forward() 頁(yè)面前進(jìn)
- driver.back() 頁(yè)面后退
- driver.screen_shot(img_name) 頁(yè)面截圖
示例
打印當(dāng)前標(biāo)簽頁(yè)的url
import time
from selenium import webdriver
driver = webdriver.Chrome()
# 控制瀏覽器訪問(wèn)url地址
driver.get("https://www.baidu.com/")
time.sleep(3)
# 打印當(dāng)前標(biāo)簽頁(yè)的url
print(driver.current_url)
driver.quit()運(yùn)行結(jié)果:

2、driver對(duì)象定位標(biāo)簽元素獲取標(biāo)簽對(duì)象的方法
在selenium中可以通過(guò)多種方式來(lái)定位標(biāo)簽,返回標(biāo)簽元素對(duì)象
| 方式 | 功能 |
|---|---|
| find_element_by_id | 返回一個(gè)元素 |
| find_element(s)_by_class_name | 根據(jù)類(lèi)名獲取元素列表 |
| 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選擇器來(lái)獲取元素列表 |
注意
find_element和find_elements的區(qū)別:
- 多了個(gè)s就返回列表,沒(méi)有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值
示例
接下來(lái)我們就通過(guò)代碼來(lái)模擬百度搜索(具體講解)
首先我們先打開(kāi)百度頁(yè)面,然后點(diǎn)擊網(wǎng)頁(yè)檢查 ,定位搜索框,可以看見(jiàn)搜索框的input標(biāo)簽的id值為kw

- 于是開(kāi)始編寫(xiě)基礎(chǔ)代碼
- 通過(guò)driver.get()獲取網(wǎng)頁(yè)
- 通過(guò)find_element_by_id('kw')定位搜索框
- 通過(guò).send_keys('python')向搜索框輸入搜索信息
import time
from selenium import webdriver
driver = webdriver.Chrome()
# 控制瀏覽器訪問(wèn)url地址
driver.get("https://www.baidu.com/")
time.sleep(3)
# 在百度搜索框中搜索'python'
driver.find_element_by_id('kw').send_keys('python')再定位搜索按鈕:“百度一下” ,其id值為su

完善代碼,通過(guò) .click() 實(shí)現(xiàn)點(diǎn)擊搜索
import time
from selenium import webdriver
driver = webdriver.Chrome()
# 控制瀏覽器訪問(wèn)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
通過(guò)定位獲取的標(biāo)簽對(duì)象的 text 屬性,獲取文本內(nèi)容
獲取屬性值: element.get_attribute("屬性名")
通過(guò)定位獲取的標(biāo)簽對(duì)象的 get_attribute 函數(shù),傳入屬性名,來(lái)獲取屬性的值
獲取 “百度一下”搜索按鈕的value屬性值

import time
from selenium import webdriver
driver = webdriver.Chrome()
# 控制瀏覽器訪問(wèn)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無(wú)頭模式
我們知道,當(dāng)我們利用 dirver.get() 獲取網(wǎng)頁(yè)時(shí)會(huì)自動(dòng)打開(kāi)一個(gè)網(wǎng)頁(yè),但是有時(shí)候我們可能不需要通過(guò)打開(kāi)瀏覽器獲取數(shù)據(jù),于是就可以通過(guò)給driver對(duì)象設(shè)置無(wú)頭模式 。
# 給driver對(duì)象設(shè)置無(wú)頭模式
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和Appium移動(dòng)端多設(shè)備自動(dòng)化測(cè)試框架實(shí)現(xiàn)
這篇文章主要介紹了python和Appium移動(dòng)端多設(shè)備自動(dòng)化測(cè)試框架實(shí)現(xiàn),基于pytest和Appium框架,支持Android和iOS功能自動(dòng)化的測(cè)試框架的相關(guān)內(nèi)容,需要的小伙伴可以參考一下2022-04-04
python實(shí)現(xiàn)飛機(jī)大戰(zhàn)游戲(pygame版)
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)pygame版的飛機(jī)大戰(zhàn)游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-02-02
Python實(shí)現(xiàn)遞歸遍歷文件夾并刪除文件
本文給大家匯總了3個(gè)Python實(shí)現(xiàn)遍歷文件夾并刪除的代碼,主要是給大家分享下這3種方法的實(shí)現(xiàn)思路,有需要的小伙伴可以參考下2016-04-04
Python模擬登錄網(wǎng)易云音樂(lè)并自動(dòng)簽到
時(shí)隔三周沒(méi)有和大家見(jiàn)過(guò)面了,最近在研究python模擬登陸專(zhuān)題,話不多說(shuō),讓我們愉快地開(kāi)始實(shí)現(xiàn)模擬登陸實(shí)現(xiàn)網(wǎng)易云自動(dòng)簽到,需要的朋友可以參考下2021-06-06
使用Python paramiko模塊利用多線程實(shí)現(xiàn)ssh并發(fā)執(zhí)行操作
ssh是一個(gè)協(xié)議,OpenSSH是其中一個(gè)開(kāi)源實(shí)現(xiàn),paramiko是Python的一個(gè)庫(kù),實(shí)現(xiàn)了SSHv2協(xié)議(底層使用cryptography)。這篇文章主要介紹了使用Python paramiko模塊利用多線程實(shí)現(xiàn)ssh并發(fā)執(zhí)行操作,需要的朋友可以參考下2019-12-12

