對(duì)于子嵌套的頁(yè)面,我們直接標(biāo)簽定位會(huì)報(bào)錯(cuò),如下面代碼
from selenium import webdriver
from selenium.webdriver.common.by import By
#瀏覽器驅(qū)動(dòng)
bro=webdriver.Chrome()
#目標(biāo)網(wǎng)址
bro.get('https://www.runoob.com/html/html-iframes.html')
#標(biāo)簽定位
a=bro.find_element(By.CLASS_NAME,'item-to')
print(a)
所以我們要切換作用域,根據(jù)iframe標(biāo)簽的id轉(zhuǎn)入iframe框架,再進(jìn)行后續(xù)操作。
操作完成后返回主框架
from selenium import webdriver
from selenium.webdriver.common.by import By
#瀏覽器驅(qū)動(dòng)
bro=webdriver.Chrome()
#目標(biāo)網(wǎng)址
bro.get('https://www.runoob.com/html/html-iframes.html')
bro.switch_to.frame(1)
#bro.switch_to.frame(iframe_id)
#標(biāo)簽定位
a=bro.find_element(By.CLASS_NAME,'item-top')
#返回主框架
bro.switch_to.default_content()
print(a)
源碼語(yǔ)法請(qǐng)看下圖?
模擬登錄
我們來(lái)模擬登錄進(jìn)行簡(jiǎn)單案例加以鞏固,比如qq空間登錄界面。
現(xiàn)在一般來(lái)說(shuō),進(jìn)入qq空間官網(wǎng)都會(huì)顯示二維碼登錄,所以,我們要定位到賬號(hào)密碼登錄界面
?然后我們還發(fā)現(xiàn),在輸入界面還使用了子框架
from selenium import webdriver
from selenium.webdriver.common.by import By
from time import sleep
#瀏覽器驅(qū)動(dòng)
bro=webdriver.Chrome()
#目標(biāo)網(wǎng)址
bro.get('https://qzone.qq.com/')
#切入子框架中
bro.switch_to.frame('login_frame')
#標(biāo)簽定位到-密碼登錄
bin=bro.find_element(By.ID,'switcher_plogin')
bin.click()#點(diǎn)擊進(jìn)去
uer=bro.find_element(By.ID,'u')#定位賬號(hào)
pass_word=bro.find_element(By.ID,'p')#定位密碼
uer.send_keys("1248820171")#輸入賬號(hào)
pass_word.send_keys('1234566555')#輸入密碼
bro.find_element(By.ID,'login_button').click()#點(diǎn)擊登錄
sleep(5)
#釋放瀏覽器
bro.quit()
?無(wú)頭瀏覽器
在爬取數(shù)據(jù)的過(guò)程中,突然間瀏覽器蹦出來(lái)直接嚇一跳,那么有沒(méi)有什么辦法,可以關(guān)閉界面還能保證爬取工作正常進(jìn)行呢?下面就要介紹谷歌的無(wú)頭瀏覽器。
如何防止服務(wù)器端監(jiān)聽(tīng)到是selenium爬蟲(chóng)呢 ,我們有下面的反爬策略進(jìn)行規(guī)避
即導(dǎo)入一個(gè)包from selenium.webdriver import ChromeOptions文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-761707.html
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-761707.html
到了這里,關(guān)于selenium iframe框架處理的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!