久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Python自動(dòng)化辦公——Selenium控制瀏覽器

 伊伊爸 2022-10-27 發(fā)布于湖北

準(zhǔn)備工作


Selenium模塊是利用程序直接操控瀏覽器,,就像模擬用戶與頁(yè)面交互一樣,,你只需把程序設(shè)定好就可以讓他自己執(zhí)行一系列操作像打開網(wǎng)頁(yè),填寫內(nèi)容,提交表單,下載文件等操作,。但其運(yùn)行時(shí)間較慢,。

這里我們FireFox瀏覽器作為我們將要去控制的瀏覽器,,那么我們需要在電腦中提前下載安裝好FireFox瀏覽器,同時(shí)要下載一個(gè)可以讓程序控制它的驅(qū)動(dòng),,驅(qū)動(dòng)下載鏈接為Releases · mozilla/geckodriver · GitHub,,可以根據(jù)自己電腦的版本來(lái)下載對(duì)應(yīng)的驅(qū)動(dòng)。下載好后將其解壓到自己指定的文件夾中,,selenium模塊可以通過(guò)在cmd中 'pip install selenium’進(jìn)行安裝,。以上準(zhǔn)備完成后就可以執(zhí)行接下來(lái)的操作了,我們先簡(jiǎn)單的試一下:
#導(dǎo)入相關(guān)模塊from selenium import webdriverfrom selenium.webdriver.chrome.service import Service#將驅(qū)動(dòng)所在路徑放入service中drive = Service('D:\\軟件\\geckodriver.exe')#啟動(dòng)火狐瀏覽器browser = webdriver.Firefox(service=drive)#將鏈接指向https://xueshu.baidu.com/browser.get('https://xueshu.baidu.com/')
輸出:

Image


這樣我們就成功利用程序自動(dòng)打開了網(wǎng)頁(yè),!

點(diǎn)擊頁(yè)面


下面我們模擬鼠標(biāo)點(diǎn)擊頁(yè)面,,我們?cè)诎俣葘W(xué)術(shù)的右面可以看到各個(gè)功能,接下來(lái)我們想進(jìn)入學(xué)術(shù)分析這一欄目中,,應(yīng)該如何操作呢,?首先我們需要獲取到學(xué)術(shù)分析所在的位置,并轉(zhuǎn)到它所代表的鏈接,,這需要我們知道如何在頁(yè)面中尋找元素,。WebDriver中尋找元素通常使用的是find_elements(by=By.*),其中包括以下幾種查找方式:

Image


比如這里我們可以根據(jù)(LINK_TEXT)“學(xué)術(shù)分析”所在的位置找到其鏈接,,進(jìn)而進(jìn)行模擬點(diǎn)擊的操作,,使其跳轉(zhuǎn)到“學(xué)術(shù)分析”頁(yè)面:
from selenium import webdriverfrom selenium.webdriver.chrome.service import Servicefrom selenium.webdriver.common.action_chains import ActionChains#導(dǎo)入Byfrom selenium.webdriver.common.by import Bydrive = Service('D:\\軟件\\geckodriver.exe')browser = webdriver.Firefox(service=drive)browser.get('https://xueshu.baidu.com/')link = browser.find_element(by=By.LINK_TEXT,value='學(xué)術(shù)分析')link.click()

按道理來(lái)說(shuō),這樣就能成功轉(zhuǎn)到學(xué)術(shù)分析所指的頁(yè)面,,然而現(xiàn)在只停在打開的時(shí)候的頁(yè)面外加一堆看不到的錯(cuò)誤提示,。在進(jìn)行短暫的思考過(guò)后,發(fā)現(xiàn)其剛打開頁(yè)面的時(shí)候首先會(huì)出現(xiàn)一個(gè)頁(yè)面提示(如首頁(yè)圖所示),,需要先點(diǎn)擊一下頁(yè)面(任意位置即可),,才能進(jìn)行后續(xù)操作,那么我們也可以利用程序模擬鼠標(biāo)隨意點(diǎn)擊下頁(yè)面再進(jìn)行后續(xù)操作就可以了呀?。?/span>
from selenium import webdriverfrom selenium.webdriver.chrome.service import Servicefrom selenium.webdriver.common.action_chains import ActionChains#導(dǎo)入Byfrom selenium.webdriver.common.by import Bydrive = Service('D:\\軟件\\geckodriver.exe')browser = webdriver.Firefox(service=drive)browser.get('https://xueshu.baidu.com/')#隨意點(diǎn)擊頁(yè)面,,位置為頁(yè)面橫坐標(biāo)500,縱坐標(biāo)100處ActionChains(browser).move_by_offset(500, 100).click().perform()link = browser.find_element(by=By.LINK_TEXT,value='學(xué)術(shù)分析')link.click()
輸出:

Image




填寫并提交表單


我們還可以找到網(wǎng)頁(yè)中的輸入文本部分,,通常是<input>或<textarea>元素,通過(guò)調(diào)用send_keys()方法將文本傳進(jìn)去,,再使用submit()方法提交表單,,等同于點(diǎn)擊表單所在的提交按鈕,比如這里我們想搜索有關(guān)'medical’的文獻(xiàn),,即可找到百度學(xué)術(shù)檢索框的位置:

Image

然后將’medical’傳入進(jìn)去并提交:
from selenium import webdriverfrom selenium.webdriver.chrome.service import Servicefrom selenium.webdriver.common.by import Bydrive = Service('D:\\軟件\\geckodriver.exe')browser = webdriver.Firefox(service=drive)browser.get('https://xueshu.baidu.com/')ipt = browser.find_element(by=By.ID,value='kw')ipt.send_keys('medical')ipt.submit()

輸出:

Image


發(fā)送特殊鍵及點(diǎn)擊瀏覽器按鈕


如果我們想要的內(nèi)容不在光標(biāo)當(dāng)前所在的頁(yè)面位置,,我們可以通過(guò)滾動(dòng)到該頁(yè)面的底部進(jìn)行獲取。這里我們利用的是<html>標(biāo)簽,,以及Keys的END變量,。<html>標(biāo)簽通常是在HTML文件的開頭和結(jié)尾處,,因此我們利用它來(lái)滾動(dòng)頁(yè)面:
from selenium import webdriverfrom selenium.webdriver.chrome.service import Servicefrom selenium.webdriver.common.by import Byfrom selenium.webdriver.common.action_chains import ActionChainsfrom selenium.webdriver.common.keys import Keysdrive = Service('D:\\軟件\\geckodriver.exe')browser = webdriver.Firefox(service=drive)browser.get('https://xueshu.baidu.com/')#隨意點(diǎn)擊頁(yè)面,位置為頁(yè)面橫坐標(biāo)500,,縱坐標(biāo)100處ActionChains(browser).move_by_offset(500, 100).click().perform()roll = browser.find_element(by=By.TAG_NAME,value='html')roll.send_keys(Keys.END)
輸出:

Image


我們還可以模擬點(diǎn)擊瀏覽器按鈕比如前進(jìn)browser.forward(),,后退browser.back(),刷新browser.refresh(),,關(guān)閉窗口browser.quit():
from selenium import webdriverfrom selenium.webdriver.chrome.service import Servicefrom selenium.webdriver.common.by import Bydrive = Service('D:\\軟件\\geckodriver.exe')browser = webdriver.Firefox(service=drive)browser.get('https://xueshu.baidu.com/')browser.refresh()

selenium還能做的遠(yuǎn)不止這些,,比如模擬登錄,修改cookie等等

以上即為本次全部?jī)?nèi)容,,寫文不易,,如果您覺得我們的推送對(duì)您很有幫助,您可以通過(guò)贊賞來(lái)給予我們超大鼓勵(lì),!跪謝~

END


參考資料

[1]Python編程快速上手:讓繁瑣工作自動(dòng)化/(美)斯維加特(Al Sweigart)著,;王海鵬譯. -- 北京:人民郵電出版社,2016.7
[2]Selenium Documentation — Selenium 4.4 documentation

https://www.v/selenium/docs/api/py/api.html




Image

作者:三五七

Image

“統(tǒng)計(jì)分析與數(shù)據(jù)挖掘”是一個(gè)分享以原創(chuàng)為主的數(shù)據(jù)挖掘,、統(tǒng)計(jì)軟件操作,、生信分析、機(jī)器學(xué)習(xí)等內(nèi)容的文章,、教程和學(xué)習(xí)視頻的公眾號(hào),。創(chuàng)建的原目的是為了敦促學(xué)生學(xué)習(xí)相關(guān)知識(shí)和進(jìn)行寫作訓(xùn)練。如果您喜歡我們的推送內(nèi)容,,歡迎點(diǎn)贊,、轉(zhuǎn)發(fā)、在看,,您的支持將是我們深入學(xué)習(xí)的動(dòng)力!


    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多