国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Python中selenium的玩法,小朋友看了都說(shuō)學(xué)會(huì)了

這篇具有很好參考價(jià)值的文章主要介紹了Python中selenium的玩法,小朋友看了都說(shuō)學(xué)會(huì)了。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

selenium提取數(shù)據(jù)

1. driver對(duì)象的常用屬性和方法

2. driver對(duì)象定位標(biāo)簽元素獲取標(biāo)簽對(duì)象的方法

3. 標(biāo)簽對(duì)象提取文本內(nèi)容和屬性值

selenium的其它使用方法

1. selenium標(biāo)簽頁(yè)的切換

2. switch_to切換frame標(biāo)簽

3. selenium對(duì)cookie的處理

4. selenium控制瀏覽器執(zhí)行js代碼

5. 頁(yè)面等待

6. selenium開(kāi)啟無(wú)界面模式

7. selenium使用代理ip

8. selenium替換user-agent


selenium的介紹


1. selenium運(yù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)行效果

chrome瀏覽器的運(yùn)行效果

在下載好chromedriver以及安裝好selenium模塊后,執(zhí)行下列代碼并觀察運(yùn)行的過(guò)程

from selenium import webdriver

?

如果driver沒(méi)有添加到了環(huán)境變量,則需要將driver的絕對(duì)路徑賦值給executable_path參數(shù)

driver = webdriver.Chrome(executable_path=‘/home/worker/Desktop/driver/chromedriver’)

?

如果driver添加了環(huán)境變量則不需要設(shè)置executable_path

driver = webdriver.Chrome()

?

向一個(gè)url發(fā)起請(qǐng)求

driver.get(“http://www.itcast.cn/”)

?

把網(wǎng)頁(yè)保存為圖片,69版本以上的谷歌瀏覽器將無(wú)法使用截圖功能

driver.save_screenshot(“itcast.png”)

?

print(driver.title) # 打印頁(yè)面的標(biāo)題

?

退出模擬瀏覽器

driver.quit() # 一定要退出!不退出會(huì)有殘留進(jìn)程!

phantomjs無(wú)界面瀏覽器的運(yùn)行效果

PhantomJS 是一個(gè)基于Webkit的“無(wú)界面”(headless)瀏覽器,它會(huì)把網(wǎng)站加載到內(nèi)存并執(zhí)行頁(yè)面上的 JavaScript。下載地址:http://phantomjs.org/download.html

from selenium import webdriver

?

指定driver的絕對(duì)路徑

driver = webdriver.PhantomJS(executable_path=‘/home/worker/Desktop/driver/phantomjs’)

driver = webdriver.Chrome(executable_path=‘/home/worker/Desktop/driver/chromedriver’)

?

向一個(gè)url發(fā)起請(qǐng)求

driver.get(“http://www.itcast.cn/”)

?

把網(wǎng)頁(yè)保存為圖片

driver.save_screenshot(“itcast.png”)

?

退出模擬瀏覽器

driver.quit() # 一定要退出!不退出會(huì)有殘留進(jìn)程!

觀察運(yùn)行效果

  • python代碼能夠自動(dòng)的調(diào)用谷歌瀏覽或phantomjs無(wú)界面瀏覽器,控制其自動(dòng)訪問(wèn)網(wǎng)站

無(wú)頭瀏覽器與有頭瀏覽器的使用場(chǎng)景

  • 通常在開(kāi)發(fā)過(guò)程中我們需要查看運(yùn)行過(guò)程中的各種情況所以通常使用有頭瀏覽器

  • 在項(xiàng)目完成進(jìn)行部署的時(shí)候,通常平臺(tái)采用的系統(tǒng)都是服務(wù)器版的操作系統(tǒng),服務(wù)器版的操作系統(tǒng)必須使用無(wú)頭瀏覽器才能正常運(yùn)行

2. selenium的作用和工作原理

利用瀏覽器原生的API,封裝成一套更加面向?qū)ο蟮腟elenium WebDriver API,直接操作瀏覽器頁(yè)面里的元素,甚至操作瀏覽器本身(截屏,窗口大小,啟動(dòng),關(guān)閉,安裝插件,配置證書(shū)之類的)

Python中selenium的玩法,小朋友看了都說(shuō)學(xué)會(huì)了,程序員,python,selenium,java

  • webdriver本質(zhì)是一個(gè)web-server,對(duì)外提供webapi,其中封裝了瀏覽器的各種功能

  • 不同的瀏覽器使用各自不同的webdriver


3. selenium的安裝以及簡(jiǎn)單使用

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

在python虛擬環(huán)境中安裝selenium模塊

pip/pip3 install selenium

下載版本符合的webdriver

4. selenium的簡(jiǎ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/”)

?

在百度搜索框中搜索’python’

driver.find_element_by_id(‘kw’).send_keys(‘python’)

點(diǎn)擊’百度搜索’

driver.find_element_by_id(‘su’).click()

?

time.sleep(6)

退出瀏覽器

driver.quit()

  • 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事件


Python中selenium的玩法,小朋友看了都說(shuō)學(xué)會(huì)了,程序員,python,selenium,java

selenium提取數(shù)據(jù)


1. driver對(duì)象的常用屬性和方法

在使用selenium過(guò)程中,實(shí)例化driver對(duì)象后,driver對(duì)象有一些常用的屬性和方法

  1. driver.page_source 當(dāng)前標(biāo)簽頁(yè)瀏覽器渲染之后的網(wǎng)頁(yè)源代碼

  2. driver.current_url 當(dāng)前標(biāo)簽頁(yè)的url

  3. driver.close() 關(guān)閉當(dāng)前標(biāo)簽頁(yè),如果只有一個(gè)標(biāo)簽頁(yè)則關(guān)閉整個(gè)瀏覽器

  4. driver.quit() 關(guān)閉瀏覽器

  5. driver.forward() 頁(yè)面前進(jìn)

  6. driver.back() 頁(yè)面后退

  7. driver.screen_shot(img_name) 頁(yè)面截圖


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ù)類名獲取元素列表)

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')


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)獲取屬性的值

  • 代碼實(shí)現(xiàn),如下:

from selenium import webdriver

?

driver = webdriver.Chrome()

?

driver.get(‘http://www.itcast.cn/’)

?

ret = driver.find_elements_by_tag_name(‘h2’)

print(ret[0].text) #

?

ret = driver.find_elements_by_link_text(‘黑馬程序員’)

print(ret[0].get_attribute(‘href’))

?

driver.quit()

Python中selenium的玩法,小朋友看了都說(shuō)學(xué)會(huì)了,程序員,python,selenium,java

selenium的其它使用方法


1. selenium標(biāo)簽頁(yè)的切換

當(dāng)selenium控制瀏覽器打開(kāi)多個(gè)標(biāo)簽頁(yè)時(shí),如何控制瀏覽器在不同的標(biāo)簽頁(yè)中進(jìn)行切換呢?需要我們做以下兩步:

  • 獲取所有標(biāo)簽頁(yè)的窗口句柄

  • 利用窗口句柄字切換到句柄指向的標(biāo)簽頁(yè)

  • 這里的窗口句柄是指:指向標(biāo)簽頁(yè)對(duì)象的標(biāo)識(shí)

  • 具體的方法

# 1. 獲取當(dāng)前所有的標(biāo)簽頁(yè)的句柄構(gòu)成的列表

current_windows = driver.window_handles

?

2. 根據(jù)標(biāo)簽頁(yè)句柄列表索引下標(biāo)進(jìn)行切換

driver.switch_to.window(current_windows[0])

  • 參考代碼示例:

import time

from selenium import webdriver

?

driver = webdriver.Chrome()

driver.get(“https://www.baidu.com/”)

?

time.sleep(1)

driver.find_element_by_id(‘kw’).send_keys(‘python’)

time.sleep(1)

driver.find_element_by_id(‘su’).click()

time.sleep(1)

?

通過(guò)執(zhí)行js來(lái)新開(kāi)一個(gè)標(biāo)簽頁(yè)

js = ‘window.open(“https://www.sogou.com”);’

driver.execute_script(js)

time.sleep(1)

?

1. 獲取當(dāng)前所有的窗口

windows = driver.window_handles

?

time.sleep(2)

2. 根據(jù)窗口索引進(jìn)行切換

driver.switch_to.window(windows[0])

time.sleep(2)

driver.switch_to.window(windows[1])

?

time.sleep(6)

driver.quit()


2. switch_to切換frame標(biāo)簽

iframe是html中常用的一種技術(shù),即一個(gè)頁(yè)面中嵌套了另一個(gè)網(wǎng)頁(yè),selenium默認(rèn)是訪問(wèn)不了frame中的內(nèi)容的,對(duì)應(yīng)的解決思路是driver.switch_to.frame(frame_element)。接下來(lái)我們通過(guò)qq郵箱模擬登陸來(lái)學(xué)習(xí)這個(gè)知識(shí)點(diǎn)

  • 參考代碼:

import time

from selenium import webdriver

?

driver = webdriver.Chrome()

?

url = ‘https://mail.qq.com/cgi-bin/loginpage’

driver.get(url)

time.sleep(2)

?

login_frame = driver.find_element_by_id(‘login_frame’) # 根據(jù)id定位 frame元素

driver.switch_to.frame(login_frame) # 轉(zhuǎn)向到該frame中

?

driver.find_element_by_xpath(‘//*[@id=“u”]’).send_keys(‘1596930226@qq.com’)

time.sleep(2)

?

driver.find_element_by_xpath(‘//*[@id=“p”]’).send_keys(‘hahamimashicuode’)

time.sleep(2)

?

driver.find_element_by_xpath(‘//*[@id=“l(fā)ogin_button”]’).click()

time.sleep(2)

?

“”“操作frame外邊的元素需要切換出去”“”

windows = driver.window_handles

driver.switch_to.window(windows[0])

?

content = driver.find_element_by_class_name(‘login_pictures_title’).text

print(content)

?

driver.quit()

  • 總結(jié):

  • 切換到定位的frame標(biāo)簽嵌套的頁(yè)面中

  • driver.switch_to.frame(通過(guò)find_element_by函數(shù)定位的frame、iframe標(biāo)簽對(duì)象)

  • 利用切換標(biāo)簽頁(yè)的方式切出frame標(biāo)簽

windows = driver.window_handles

driver.switch_to.window(windows[0])


3. selenium對(duì)cookie的處理

selenium能夠幫助我們處理頁(yè)面中的cookie,比如獲取、刪除,接下來(lái)我們就學(xué)習(xí)這部分知識(shí)

獲取cookie

driver.get_cookies()返回列表,其中包含的是完整的cookie信息!不光有name、value,還有domain等cookie其他維度的信息。所以如果想要把獲取的cookie信息和requests模塊配合使用的話,需要轉(zhuǎn)換為name、value作為鍵值對(duì)的cookie字典

# 獲取當(dāng)前標(biāo)簽頁(yè)的全部cookie信息

print(driver.get_cookies())

把cookie轉(zhuǎn)化為字典

cookies_dict = {cookie[‘name’]: cookie[‘value’] for cookie in driver.get_cookies()}

刪除cookie

#刪除一條cookie

driver.delete_cookie(“CookieName”)

?

刪除所有的cookie

driver.delete_all_cookies()


4. selenium控制瀏覽器執(zhí)行js代碼

selenium可以讓瀏覽器執(zhí)行我們規(guī)定的js代碼,運(yùn)行下列代碼查看運(yùn)行效果

import time

from selenium import webdriver

?

driver = webdriver.Chrome()

driver.get(“http://www.itcast.cn/”)

time.sleep(1)

?

js = ‘window.scrollTo(0,document.body.scrollHeight)’ # js語(yǔ)句

driver.execute_script(js) # 執(zhí)行js的方法

?

time.sleep(5)

driver.quit()

  • 執(zhí)行js的方法:driver.execute_script(js)

5. 頁(yè)面等待

頁(yè)面在加載的過(guò)程中需要花費(fèi)時(shí)間等待網(wǎng)站服務(wù)器的響應(yīng),在這個(gè)過(guò)程中標(biāo)簽元素有可能還沒(méi)有加載出來(lái),是不可見(jiàn)的,如何處理這種情況呢?

  1. 頁(yè)面等待分類

  2. 強(qiáng)制等待介紹

  3. 顯式等待介紹

  4. 隱式等待介紹

  5. 手動(dòng)實(shí)現(xiàn)頁(yè)面等待

頁(yè)面等待的分類

首先我們就來(lái)了解以下selenium頁(yè)面等待的分類

自我介紹一下,小編13年上海交大畢業(yè),曾經(jīng)在小公司待過(guò),也去過(guò)華為、OPPO等大廠,18年進(jìn)入阿里一直到現(xiàn)在。

深知大多數(shù)Python工程師,想要提升技能,往往是自己摸索成長(zhǎng)或者是報(bào)班學(xué)習(xí),但對(duì)于培訓(xùn)機(jī)構(gòu)動(dòng)則幾千的學(xué)費(fèi),著實(shí)壓力不小。自己不成體系的自學(xué)效果低效又漫長(zhǎng),而且極易碰到天花板技術(shù)停滯不前!

因此收集整理了一份《2024年P(guān)ython開(kāi)發(fā)全套學(xué)習(xí)資料》,初衷也很簡(jiǎn)單,就是希望能夠幫助到想自學(xué)提升又不知道該從何學(xué)起的朋友,同時(shí)減輕大家的負(fù)擔(dān)。

Python中selenium的玩法,小朋友看了都說(shuō)學(xué)會(huì)了,程序員,python,selenium,java

Python中selenium的玩法,小朋友看了都說(shuō)學(xué)會(huì)了,程序員,python,selenium,java

Python中selenium的玩法,小朋友看了都說(shuō)學(xué)會(huì)了,程序員,python,selenium,java

Python中selenium的玩法,小朋友看了都說(shuō)學(xué)會(huì)了,程序員,python,selenium,java

Python中selenium的玩法,小朋友看了都說(shuō)學(xué)會(huì)了,程序員,python,selenium,java

Python中selenium的玩法,小朋友看了都說(shuō)學(xué)會(huì)了,程序員,python,selenium,java

既有適合小白學(xué)習(xí)的零基礎(chǔ)資料,也有適合3年以上經(jīng)驗(yàn)的小伙伴深入學(xué)習(xí)提升的進(jìn)階課程,基本涵蓋了95%以上前端開(kāi)發(fā)知識(shí)點(diǎn),真正體系化!

由于文件比較大,這里只是將部分目錄大綱截圖出來(lái),每個(gè)節(jié)點(diǎn)里面都包含大廠面經(jīng)、學(xué)習(xí)筆記、源碼講義、實(shí)戰(zhàn)項(xiàng)目、講解視頻,并且后續(xù)會(huì)持續(xù)更新

如果你覺(jué)得這些內(nèi)容對(duì)你有幫助,可以掃碼獲?。。。。▊渥ython)文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-851568.html

nium頁(yè)面等待的分類

自我介紹一下,小編13年上海交大畢業(yè),曾經(jīng)在小公司待過(guò),也去過(guò)華為、OPPO等大廠,18年進(jìn)入阿里一直到現(xiàn)在。

深知大多數(shù)Python工程師,想要提升技能,往往是自己摸索成長(zhǎng)或者是報(bào)班學(xué)習(xí),但對(duì)于培訓(xùn)機(jī)構(gòu)動(dòng)則幾千的學(xué)費(fèi),著實(shí)壓力不小。自己不成體系的自學(xué)效果低效又漫長(zhǎng),而且極易碰到天花板技術(shù)停滯不前!

因此收集整理了一份《2024年P(guān)ython開(kāi)發(fā)全套學(xué)習(xí)資料》,初衷也很簡(jiǎn)單,就是希望能夠幫助到想自學(xué)提升又不知道該從何學(xué)起的朋友,同時(shí)減輕大家的負(fù)擔(dān)。

[外鏈圖片轉(zhuǎn)存中…(img-axO3k8Fs-1712507639012)]

[外鏈圖片轉(zhuǎn)存中…(img-2iMnvusv-1712507639013)]

Python中selenium的玩法,小朋友看了都說(shuō)學(xué)會(huì)了,程序員,python,selenium,java

Python中selenium的玩法,小朋友看了都說(shuō)學(xué)會(huì)了,程序員,python,selenium,java

Python中selenium的玩法,小朋友看了都說(shuō)學(xué)會(huì)了,程序員,python,selenium,java

Python中selenium的玩法,小朋友看了都說(shuō)學(xué)會(huì)了,程序員,python,selenium,java

既有適合小白學(xué)習(xí)的零基礎(chǔ)資料,也有適合3年以上經(jīng)驗(yàn)的小伙伴深入學(xué)習(xí)提升的進(jìn)階課程,基本涵蓋了95%以上前端開(kāi)發(fā)知識(shí)點(diǎn),真正體系化!

由于文件比較大,這里只是將部分目錄大綱截圖出來(lái),每個(gè)節(jié)點(diǎn)里面都包含大廠面經(jīng)、學(xué)習(xí)筆記、源碼講義、實(shí)戰(zhàn)項(xiàng)目、講解視頻,并且后續(xù)會(huì)持續(xù)更新

如果你覺(jué)得這些內(nèi)容對(duì)你有幫助,可以掃碼獲?。。。。▊渥ython)

Python中selenium的玩法,小朋友看了都說(shuō)學(xué)會(huì)了,程序員,python,selenium,java

到了這里,關(guān)于Python中selenium的玩法,小朋友看了都說(shuō)學(xué)會(huì)了的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包