python?selenium實(shí)現(xiàn)登錄豆瓣示例詳解
使用python爬蟲(chóng)selenium訪問(wèn)豆瓣https://www.douban.com/,實(shí)現(xiàn)模擬登錄過(guò)程。
網(wǎng)頁(yè)界面如圖所示
首先導(dǎo)包后,定位圖中 密碼登錄 的element,并點(diǎn)擊。
經(jīng)分析,該標(biāo)簽的class_name為’account-tab-account’。
from selenium import webdriver import time driver = webdriver.Chrome() driver.get('https://www.douban.com/') # 點(diǎn)擊 密碼登錄 按鈕 。但是找不到該element,不存在網(wǎng)頁(yè)中 driver.find_element_by_class_name('account-tab-account').click()
但是該段代碼結(jié)果出現(xiàn)了報(bào)錯(cuò),定位不到目標(biāo)元素。
經(jīng)核實(shí),發(fā)現(xiàn)該element并不存在與網(wǎng)頁(yè)源碼中。
經(jīng)分析,登錄界面存在于一個(gè)叫iframe的標(biāo)簽中。iframe這個(gè)標(biāo)簽是嵌套在這個(gè)網(wǎng)頁(yè)中的,單獨(dú)拿出來(lái)也能用。所以并不存在于網(wǎng)頁(yè)源碼中。
訪問(wèn)該src鏈接可以看到如下界面:
iframe中的元素不屬于原網(wǎng)頁(yè)的元素,但是iframe在網(wǎng)頁(yè)源碼中,要獲取其元素,先定位iframe:
# 找到登陸的iframe login_iframe = driver.find_element_by_xpath('//div[@class="login"]/iframe') # 切換到iframe driver.switch_to.frame(login_iframe) # 點(diǎn)擊密碼登陸 driver.find_element_by_class_name('account-tab-account').click()
找到之后,還要切換進(jìn)去,使用 switch_to 方法。
經(jīng)測(cè)試,點(diǎn)擊成功。
接下來(lái),就是輸入賬號(hào)和密碼過(guò)程了
# 填寫(xiě)賬號(hào) driver.find_element_by_id('username').send_keys('123456789@163.com') time.sleep(2) # 填寫(xiě)密碼 driver.find_element_by_id('password').send_keys('xxxx')
登錄
# 點(diǎn)擊登陸按鈕 driver.find_element_by_xpath('/html/body/div[1]/div[2]/div[1]/div[5]/a').click()
也可以通過(guò)JS點(diǎn)擊
execute_script() 方法
login_button = driver.find_element_by_xpath('/html/body/div[1]/div[2]/div[1]/div[5]/a') driver.execute_script("arguments[0].click()", login_button)
此外,在輸入賬號(hào)密碼前,有時(shí)也會(huì)遇到輸入框中有諸如“請(qǐng)輸入賬號(hào)”、“請(qǐng)輸入密碼”這樣的文字(默認(rèn)值),需要清除掉后才能輸入,否則輸入內(nèi)容會(huì)重疊。(此例中不會(huì),此例中輸入新內(nèi)容后自動(dòng)覆蓋原有的“手機(jī)號(hào)/郵箱”、“密碼”字樣)清楚輸入框中的文字,使用 clear 方法。
# 以清除用戶名一欄的內(nèi)容為例 driver.find_element_by_id('username').clear()
最后,模擬登陸的目的,一般是為了獲取cookie。使用到以下命令。
get_cookies()
print(driver.get_cookies())
到此這篇關(guān)于python selenium登錄豆瓣示例詳解的文章就介紹到這了,更多相關(guān)python selenium登錄豆瓣內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python自定義進(jìn)程池實(shí)例分析【生產(chǎn)者、消費(fèi)者模型問(wèn)題】
這篇文章主要介紹了Python自定義進(jìn)程池,結(jié)合實(shí)例分析了Python使用自定義進(jìn)程池實(shí)現(xiàn)的生產(chǎn)者、消費(fèi)者模型問(wèn)題,需要的朋友可以參考下2016-09-09PyQt5 QListWidget選擇多項(xiàng)并返回的實(shí)例
今天小編就為大家分享一篇PyQt5 QListWidget選擇多項(xiàng)并返回的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-06-06Python?中10進(jìn)制數(shù)與16進(jìn)制數(shù)相互轉(zhuǎn)換問(wèn)題
這篇文章主要介紹了Python中10進(jìn)制數(shù)與16進(jìn)制數(shù)相互轉(zhuǎn)換,在Python中,我們可以使用內(nèi)置的hex()函數(shù)將10進(jìn)制數(shù)轉(zhuǎn)換為16進(jìn)制數(shù),需要的朋友可以參考下2023-05-05python根據(jù)給定文件返回文件名和擴(kuò)展名的方法
這篇文章主要介紹了python根據(jù)給定文件返回文件名和擴(kuò)展名的方法,實(shí)例分析了Python操作文件及字符串的技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-03-03python使用win32com在百度空間插入html元素示例
這篇文章主要介紹了python使用win32com在百度空間插入html元素的示例,大家參考使用吧2014-02-02python中三種輸出格式總結(jié)(%,format,f-string)
在Python語(yǔ)言編程中,我們會(huì)與字符串打交道,那務(wù)必會(huì)輸出字符串來(lái)查看字符串的內(nèi)容,下面這篇文章主要給大家介紹了關(guān)于python中三種輸出格式的相關(guān)資料,三種格式分別是%,format,f-string,需要的朋友可以參考下2022-03-03python的numpy模塊實(shí)現(xiàn)邏輯回歸模型
這篇文章主要為大家詳細(xì)介紹了python的numpy模塊實(shí)現(xiàn)邏輯回歸模型,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-07-07Python中random模塊生成隨機(jī)數(shù)詳解
本文給大家匯總了一下在Python中random模塊中最常用的生成隨機(jī)數(shù)的方法,有需要的小伙伴可以參考下2016-03-03django 將model轉(zhuǎn)換為字典的方法示例
平常的開(kāi)發(fā)過(guò)程中不免遇到需要把model轉(zhuǎn)成字典的需求,這篇文章主要介紹了Django model轉(zhuǎn)字典的方法,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2018-10-10基于Python實(shí)現(xiàn)n-gram文本生成的示例代碼
N-gram是自然語(yǔ)言處理中常用的技術(shù),它可以用于文本生成、語(yǔ)言模型訓(xùn)練等任務(wù),本文主要介紹了如何在Python中實(shí)現(xiàn)n-gram文本生成,需要的可以參考下2024-01-01