寫某網(wǎng)站自動(dòng)登錄腳本的時(shí)候發(fā)現(xiàn)评姨,登錄組件是用iframe拉起來的,分別嘗試了:
- 復(fù)制xpath到爬蟲腳本
driver.find_element_by_xpath('/html/body/div[1]/div[2]/div[1]/div[4]/i').click()
- 選取唯一的class名
driver.find_element_by_class_name('input-login').click()
均抓取不到元素,記錄下解決過程。
對(duì)于iframe套的表單要抓取元素需要多一個(gè)步驟:
- 首先抓取iframe元素
- 然后使用driver提供的switch_to_frame函數(shù)
- 之后再爬取iframe內(nèi)的元素。
代碼示例如下:
#start
driver.get(url=login_url)
driver.implicitly_wait(3)
#打開iframe頁(yè)面
driver.find_element_by_class_name('btn').click()
driver.implicitly_wait(3)
# iframe處理
iframe = driver.find_element_by_id('UDBSdkLgn_iframe')
driver.switch_to_frame(iframe)
#抓取元素
driver.find_element_by_class_name('input-login').click()