selenium爬取iframe内容的方法

写某网站自动登录脚本的时候发现,登录组件是用iframe拉起来的,分别尝试了:

  • 复制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()

均抓取不到元素,记录下解决过程。

对于iframe套的表单要抓取元素需要多一个步骤:

  1. 首先抓取iframe元素
  2. 然后使用driver提供的switch_to_frame函数
  3. 之后再爬取iframe内的元素。

代码示例如下:

#start
driver.get(url=login_url)
driver.implicitly_wait(3)
#打开iframe页面
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()

你可能感兴趣的:(selenium爬取iframe内容的方法)