首頁 > 軟體

Python selenium模組的安裝和設定教學

2022-10-30 14:00:48

一、selenium的安裝以及簡單應用

我們以谷歌瀏覽器的chromedriver為例

1、在Python虛擬環境中安裝selenium模組

pip/pip3 install selenium

2、下載版本符合的webdriver

以chrome谷歌瀏覽器為例

檢視谷歌瀏覽器的版本

滑鼠點選右上角的豎排的三個點,然後選擇“幫助”,選擇“關於 Google Chrome”,進去之後即可檢視谷歌瀏覽器的版本

存取下載chromedriver網站

存取chromedriver下載地址,點選進入不同版本的chromedriver下載頁面

點選notes.txt進入版本說明頁面 

檢視chrome和chromedriver匹配的版本

根據作業系統下載正確版本的chromedriver

解壓壓縮包後獲取python程式碼可以呼叫的谷歌瀏覽器的webdriver可執行檔案

  • windows為 chromedriver.exe
  • linux和macos為 chromedriver

chromedriver環境的設定

  • windows環境下需要將 chromedriver.exe 所在的目錄設定為path環境變數中的路徑
  • linux/mac環境下,將 chromedriver 所在的目錄設定到系統的PATH環境值中

3、chromedriver環境設定的教學

windows環境下將 chromedriver.exe 所在的目錄設定為path環境變數中的路徑的過程

滑鼠右鍵點選“Google Chrome” ,然後點選“開啟檔案所在位置”複製 chrome.exe 所在的檔案路徑

接著開啟“控制面板” 搜尋輸入 “環境變數” 並搜尋,然後點選 “編輯系統環境變數”

 

二、selenium的簡單使用

Selenium是一個Web的自動化測試工具,最初是為網站自動化測試而開發的。

Selenium 可以直接呼叫瀏覽 器,它支援所有主流的瀏覽器(包括PhantomJS這些無介面的瀏覽器),可以接收指令,讓瀏覽器自動載入頁 面,獲取需要的資料,甚至頁面截圖等。

我們可以使用selenium很容易完成之前編寫的爬蟲,接下來我們就來 看一下selenium的執行效果

接下來我們就通過程式碼來模擬百度搜尋(展示效果)

import time 
from selenium import webdriver 
 
# 通過指定chromedriver的路徑來範例化driver物件,chromedriver放在當前目錄。 
# driver = webdriver.Chrome(executable_path='./chromedriver') 
# 這裡的chromedriver已經新增環境變數 
driver = webdriver.Chrome() 
 
# 控制瀏覽器存取url地址 
driver.get("https://www.baidu.com/") 
time.sleep(3)
# 在百度搜尋方塊中搜尋'python' 
driver.find_element_by_id('kw').send_keys('python') 
# 點選'百度搜尋' 
driver.find_element_by_id('su').click() 
time.sleep(6) 
# 退出瀏覽器 
driver.quit()

執行結果

webdriver.Chrome(executable_path='./chromedriver') 中executable引數指定的是下載好的

chromedriver檔案的路徑

driver.find_element_by_id('kw').send_keys('python') 定位id屬性值是'kw'的標籤,並向其中輸入字元 串'python'

driver.find_element_by_id('su').click() 定位id屬性值是su的標籤,並點選

click函數作用是:觸發標籤的js的click事件

三、selenium提取資料

1、driver物件常用的屬性和方法

在使用selenium過程中,範例化driver物件後,driver物件有一些常用的屬性和方法

  • driver.page_source 獲取當前分頁瀏覽器渲染之後的網頁原始碼
  • driver.current_url獲取當前分頁的url
  • driver.close() 關閉當前分頁,如果只個一個分頁則關閉整個瀏覽器
  • driver.quit() 關閉瀏覽器
  • driver.forward() 頁面前進
  • driver.back() 頁面後退
  • driver.screen_shot(img_name) 頁面截圖

範例

列印當前分頁的url

import time
from selenium import webdriver
 
driver = webdriver.Chrome()
# 控制瀏覽器存取url地址
driver.get("https://www.baidu.com/")
time.sleep(3)
# 列印當前分頁的url
print(driver.current_url)
driver.quit()

執行結果:

2、driver物件定位標籤元素獲取標籤物件的方法

在selenium中可以通過多種方式來定位標籤,返回標籤元素物件

方式功能
find_element_by_id返回一個元素
find_element(s)_by_class_name根據類名獲取元素列表
find_element(s)_by_name根據標籤的name屬性值返回包含標籤物件元素的列表
find_element(s)_by_xpath返回一個包含元素的列表
find_element(s)_by_link_text根據連線文字獲取元素列表
find_element(s)_by_partial_link_text根據連結包含的文字獲取元素列表
find_element(s)_by_tag_name;根據標籤名獲取元素列表
find_element(s)_by_css_selector根據css選擇器來獲取元素列表

注意

find_element和find_elements的區別:

  • 多了個s就返回列表,沒有s就返回匹配到的第一個標籤物件
  • find_element匹配不到就丟擲異常,find_elements匹配不到就返回空列表

by_link_text 和 by_partial_link_tex 的區別:全部文字和包含某個文字

以上函數的使用方法:

driver.find_element_by_id('id_str')

id_str是id值

範例

接下來我們就通過程式碼來模擬百度搜尋(具體講解)

首先我們先開啟百度頁面,然後點選網頁檢查 ,定位搜尋方塊,可以看見搜尋方塊的input標籤的id值為kw

  • 於是開始編寫基礎程式碼
  • 通過driver.get()獲取網頁
  • 通過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() 實現點選搜尋

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')
# 點選'百度搜尋'
driver.find_element_by_id('su').click()
time.sleep(6)
# 退出瀏覽器
driver.quit()

執行結果

3、標籤物件提取文字內容和屬性值

find_element僅僅能夠獲取元素,不能夠直接獲取其中的資料,如果需要獲取資料需要使用以下方法

對元素執行點選操作: element.click()

對定位到的標籤物件進行點選操作

向輸入框輸入資料: element.send_keys(data)

對定位到的標籤物件輸入資料

獲取文字: element.text

通過定位獲取的標籤物件的 text 屬性,獲取文字內容

獲取屬性值: element.get_attribute("屬性名")

通過定位獲取的標籤物件的 get_attribute 函數,傳入屬性名,來獲取屬性的值

獲取 “百度一下”搜尋按鈕的value屬性值

import time
from selenium import webdriver
 
driver = webdriver.Chrome()
 
# 控制瀏覽器存取url地址
driver.get("https://www.baidu.com/")
time.sleep(3)
# 點選'百度搜尋',用ele變數接受獲取的元素
ele = driver.find_element_by_id('su')
print(ele.get_attribute('value'))
time.sleep(6)
# 退出瀏覽器
driver.quit()

執行結果

四、selenium無頭模式

我們知道,當我們利用 dirver.get() 獲取網頁時會自動開啟一個網頁,但是有時候我們可能不需要通過開啟瀏覽器獲取資料,於是就可以通過給driver物件設定無頭模式 。

# 給driver物件設定無頭模式
op = webdriver.ChromeOptions()
op.add_argument('--headless')
driver = webdriver.Chrome(options=op)

以上就是Python selenium模組的安裝和設定教學的詳細內容,更多關於Python selenium模組的資料請關注it145.com其它相關文章!


IT145.com E-mail:sddin#qq.com