python數據分析之爬蟲基礎:selenium詳細講解

目錄

1、selenium介紹

2、selenium的作用:

?3、配置瀏覽器驅動環境及selenium安裝

4、selenium基本語法

4.1、selenium元素的定位

4.2、selenium元素的信息

4.3、selenium元素的交互

5、Phantomjs介紹

6、chrome handless模式


?

1、selenium介紹

(1)selenium是一個用于web應用程序測試的工具。

(2)selenium測試直接運行在瀏覽器中,就像真正的用戶在操作一樣。

(3)支持通過各種driver(FirfoxDriver,IternetExplorerDriver,OperaDriver,ChromeDriver)驅動真是瀏覽器完成測試。

(4)selenium也是支持無界面瀏覽器操作的。

2、selenium的作用:

(1)可以模擬用戶在瀏覽器中的各種操作,如點擊按鈕、輸入文本、提交表單等,用于對web應用程序進行功能測試,回歸測試等。

(2)可以用于自動化一些重復性的網頁操作任務,如批量上傳文件、定時執行任務,提高工作效率。

(3)爬取一些我們無法獲取的數據,比如京東上的限時秒殺數據等等。?

?3、配置瀏覽器驅動環境及selenium安裝

(1)操作chrome瀏覽器下載

瀏覽器的驅動要下載和瀏覽器配套的版本。將下載的瀏覽器驅動放到python的安裝目錄下,并配置系統環境變量。

4fdb8ff80e8c4efeaba853edd4050a5e.png安裝地址:官網?

(2)selenium的安裝

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple selenium

(3)測試瀏覽器驅動是否正常

from selenium import webdriver
# 創建瀏覽器操作對象
driver = webdriver.Chrome()
driver.get('http://www.baidu.com')
input()

4、selenium基本語法

4.1、selenium元素的定位

元素定位:自動化要做的就是模擬鼠標和鍵盤來操作這些元素,點擊、輸入等等。操作這些元素首先要找到他們,webdriver提供很多元素定位的方法。

(1)id可以唯一定位到一個元素(以百度的百度一下四個字為例)

button =driver.find_element(By.ID,"su")

(2)name要確保是全局唯一的(以百度的文本搜索框為例)

button = driver.find_element(By.NAME,"wd")

(3)xpath全局唯一

button = driver.find_element(By.XPATH,"//input[@id='su']")

(4)tag name標簽,即標簽名字

button = driver.find_element(By.TAG_NAME,"input")

(5)css selector元素樣式(通過bs4的語法來獲取對象)

button = driver.find_element(By.CSS_SELECTOR, '#su')

(6)link text獲取鏈接文本

button = driver.find_element(By.LINK_TEXT, '新聞')

4.2、selenium元素的信息

(1)通過get_attribute來獲取class的屬性值

input = driver.find_element(By.ID, 'su')
print(input.get_attribute('class'))

(2)通過text獲取元素文本(只能獲取兩個標簽之間的數據哦)

a = driver.find_element(By.LINK_TEXT, '新聞')
print(a.text)

(3)通過tag_name獲取標簽名

input = driver.find_element(By.ID, 'su')
print(input.tag_name)

4.3、selenium元素的交互

?(1)click點擊對象(以點擊百度一下按鈕為例)

button = driver.find_element(By.ID,"su").click()

(2)send_keys在對象上模擬按鍵輸入(搜索框中輸入周杰倫)

input = driver.find_element(By.ID,"kw").send_keys("周杰倫")

(3)滑到底部

js_bottom = "document.documentElement.scrollTop=10000"
driver.execute_script(js_bottom)

(4)回退選項

driver.back()

(5)返回上一選項

driver.forward()

案例:在百度搜索框中搜索周杰倫,翻到最后一頁,打開下一頁,回退選項,在返回上一選項。最后退出瀏覽器

from selenium import webdriver
import time
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
url = "https://www.baidu.com"
driver.get(url)
time.sleep(2)
input = driver.find_element(By.ID,"kw").send_keys("周杰倫")
time.sleep(2)
button = driver.find_element(By.ID,"su").click()
time.sleep(2)
js_bottom = "document.documentElement.scrollTop=10000"
driver.execute_script(js_bottom)
time.sleep(2)
# 獲取下一頁的按鈕
next_button = driver.find_element(By.XPATH,"//a[@class='n']").click()
time.sleep(2)
# 回退,回到上一頁
driver.back()
time.sleep(2)
# 返回上一選項
driver.forward()
time.sleep(5)
driver.quit()

?

5、Phantomjs介紹

(1)是一個無界面的瀏覽器

(2)支持頁面元素查找,js的執行等

(3)由于不進行css和gui渲染,運行效率要比真實的瀏覽器要快很多

?但是Phantomjs這個公司已經黃了,維護者已經辭職并停止維護了,因此這里就不講解了。

6、chrome handless模式

chrome-handless模式,Google針對chrome瀏覽器59版本新增加的一種模式,可以在不打開UI界面的情況下使用chrome瀏覽器,所以運行效果與chrome保持一致。?

系統要求:

? ? ? ? chrome:

? ? ? ? ? ? ? ? Unix/Linux 系統需要 chrome >=59

? ? ? ? ? ? ? ? windows 系統需要 chrome >=60

? ? ? ? python版本 >=3.6

? ? ? ? selenium版本 >=3.4.*

? ? ? ? chromedriver版本 >=2.31

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-gpu')
driver = webdriver.Chrome(options=chrome_options)
url = "https://www.baidu.com"
driver.get(url)
driver.save_screenshot("screenshot.png")

?但這樣每次都需要配置的話會比較麻煩,我們只要封裝到函數里面,那么每次用只需要調用函數

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
def share_browser():chrome_options = Options()chrome_options.add_argument('--headless')chrome_options.add_argument('--disable-gpu')driver = webdriver.Chrome(options=chrome_options)return driver
driver = share_browser()

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/62641.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/62641.shtml
英文地址,請注明出處:http://en.pswp.cn/web/62641.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【數據結構——查找】順序查找(頭歌實踐教學平臺習題)【合集】

目錄😋 任務描述 相關知識 測試說明 我的通關代碼: 測試結果: 任務描述 本關任務:實現順序查找的算法。 相關知識 為了完成本關任務,你需要掌握:1.根據輸入數據建立順序表,2.順序表的輸出,…

光伏電站建設成本利潤估算

?截至2024年9月底,全國光伏發電裝機容量達到7.7億千瓦,同比增長48.4%。其中集中式光伏4.3億千瓦,分布式光伏3.4億千瓦。2024年前三季度,全國光伏發電量6359億千瓦時,同比增長45.5%。全國光伏發電利用率97.2%,同比下降1.1個百分點.早在今年2月份,中國光伏行業協會名譽理…

create-react-app react19 搭建項目報錯

報錯截圖 此時運行會報錯: 解決方法: 1.根據提示安裝依賴法 執行npm i web-vitals然后重新允許 2.刪除文件法 在index.js中刪除對報錯文件的引入,刪除報錯文件

scala的集合性能2

可變集合\n可變集合允許在原地修改數據,適合需要頻繁更新的場景。Scala 的可變集合包括 ArrayBuffer、HashSet和HashMap。 1. ArrayBuffer\nArrayBuffer 是一個可變的動態數組,提供高效的隨機訪問和添加操作。 import scala.collection.mutable.ArrayB…

【Ubuntu】腳本自動化控制終端填充

1.sh腳本文件控制終端寫入命令 在SLAM算法中,每次啟動vins都需要起很多終端,盡管使用了超級終端Terminator可以終端內劃分看起來更加便捷,但是每次起算法的命令還是要自己輸入,已經被麻煩了兩年了,今天突然想寫寫一個…

【自學】Vues基礎

學習目錄 Vues基礎本地應用網絡應用綜合應用 工具的準備 我個人比較喜歡使用HTMLDROWNER,學習資料推薦使用VC,僅供選擇吧 前置知識 HTMLCSSJSAJAX:這個是學習資料博主推薦的 個人感覺認真學好HTMLCSSJS理解vues基礎很容易上手 官方網址…

Scratch 消滅字母小游戲

背景 最近嘗試一邊自學Scratch,一邊嘗試教給小孩,看他打字時在鍵盤上亂打一氣,想起來自己小時候玩過的學習機打字母游戲,就想給他下載一個。結果網上看到的代碼,要么質量太差(有26個字母就要寫 26 個判斷&…

python調用matlab函數(內置 + 自定義) —— 安裝matlab.engine

文章目錄 一、簡介二、安裝matlab.engine2.1、基于 CMD 安裝2.2、基于 MATLAB 安裝(不建議) 三、python調用matlab函數(內置 自定義) 一、簡介 matlab.engine(MATLAB Engine API for Python):…

pytroch環境安裝-pycharm

環境介紹 安裝pycharm 官網下載即可,我這里已經安裝,就不演示了 安裝anaconda 【官網鏈接】點擊下載 注意這一步選擇just me 這一步全部勾上 打開 anaconda Prompt 輸入conda create -n pytorch python3.8 命令解釋:創建一個叫pytorch&…

Photoshop提示錯誤彈窗dll缺失是什么原因?要怎么解決?

Photoshop提示錯誤彈窗“DLL缺失”:原因分析與解決方案 在創意設計與圖像處理領域,Photoshop無疑是眾多專業人士和愛好者的首選工具。然而,在使用Photoshop的過程中,有時會遇到一些令人頭疼的問題,比如突然彈出的錯誤…

自己總結:selenium高階知識

全篇大概10000字(含代碼),建議閱讀時間30min 一、等待機制 如果有一些內容是通過Ajax加載的內容,那就需要等待內容加載完畢才能進行下一步操作。 為了避免人為操作等待,會遇到的問題, selenium將等待轉換…

上海亞商投顧:創業板指震蕩調整 機器人概念股再度爆發

上海亞商投顧前言:無懼大盤漲跌,解密龍虎榜資金,跟蹤一線游資和機構資金動向,識別短期熱點和強勢個股。 一.市場情緒 滬指昨日沖高回落,深成指、創業板指盤中跌超1%,尾盤跌幅有所收窄。機器人概念股逆勢爆…

(Linux)CentOS7離線安裝MinIO(超詳細)

目錄 前言1. 下載2. 安裝VMware3. 安裝CentOS4. 離線安裝MinIO4.1. ssh工具連接CentOS4.2. 上傳MinIO離線包4.2.1 創建data目錄4.2.2 上傳RPM包到data目錄4.2.3 安裝RPM包4.2.4 創建MinIO數據目錄4.2.5 配置 MinIO 服務4.2.6 啟動 MinIO4.2.7 開放端口 4.2.8 訪問MinIO 創作不易…

【JavaWeb后端學習筆記】Maven項目管理

Maven 1、分模塊設計2、Maven繼承2.1 繼承關系2.2 版本鎖定 3、Maven聚合4、聚合與繼承的關系 1、分模塊設計 如果一個項目中含有大量的功能模塊。可以考慮將這些功能分模塊設計,逐一進行開發。例如將公共類可以定義在一個項目中,將通用工具類也放在一個…

HarmonyOS-高級(四)

文章目錄 應用開發安全應用DFX能力介紹HiLog使用指導HiAppEvent 🏡作者主頁:點擊! 🤖HarmonyOS專欄:點擊! ??創作時間:2024年12月11日11點18分 應用開發安全 應用隱私保護 隱私聲明彈窗的作…

網絡安全法-網絡運行安全

第三章 網絡運行安全 第一節 一般規定 第二十一條 國家實行網絡安全等級保護制度。網絡運營者應當按照網絡安全等級保護制度的要求,履行下列安全保護義務,保障網絡免受干擾、破壞或者未經授權的訪問,防止網絡數據泄露或者被竊取、篡改&…

論文閱讀:Statistical Comparisons of Classifiers over Multiple Data Sets

論文地址:Statistical Comparisons of Classifiers over Multiple Data Sets (acm.org) 前面在機器學習之Friedman檢驗-CSDN博客 中提到了Friedman檢驗,這里將對這個方法的論文進行詳細的閱讀,以了解其原理。 摘要 盡管用于在單個數據集上比…

【Unity技巧】Unity項目中哪些文件不用管理(.gitignore)

Unity的項目編譯后一般都比較大,動轍幾個G。這里面一般我們只需要把Assets, Packages, ProjectSettings這三個文件夾進行源代碼管理就可以,其他文件就可以通過下面的.gitignore來忽略掉。 .gitignore文件的內容如下: # 將此 .gitignore 文件…

練9:進制轉換

歡迎大家訂閱【藍橋杯Python每日一練】 專欄,開啟你的 Python數據結構與算法 學習之旅! 文章目錄 1 進制轉換2 例題分析 1 進制轉換 ①任意制轉為十進制 【示例】 ②十進制轉為任意制 【法一】 【法二】 2 例題分析 題目地址:https:/…

C語言:指針詳解續

一、字符指針變量 我們知道有種指針類型為字符指針(char*)。 #include <stdio.h> int main() {char ch w;char* pch &ch;printf("%c\n", *pch);return 0; } 其實它還有一種使用方式。 #include <stdio.h> int main() {char* pstr "hello…