Python爬虫基础——selenium模块进阶(<iframe>标签处理)

        <iframe>标签用于在一个网页中嵌入另一个网页。嵌套的网页可以作为一个独立的部分实现局部刷新,长用于表单的提交和第三方广告的异步加载等。以淘宝为例子,在未登录的条件下,打开一个商品详情页,单击购买按钮,会弹出登录表单。打开开发者工具定位到登录表单,可以看到登录表单存储在<iframe>标签中,并且有自己的<head>标签、<body>标签和其他标签,相当于一个嵌套在主页面中的子页面。子页面的定位方式,不能使用普通的定位方式,先使用selenium模块中的switch_to_frame()函数跳转到这个新界面,然后再进行定位。

        注意的是使用XPath时尽量不要使用/html/body/div[8]/iframe这样的格式,而是用使用

//*[@class="J_MIDDLEWARE_FRAME_WIDGET"][2]/iframe
from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
import time
service = Service('E:\\python\\Scripts\\chromedriver.exe')      #实例化一个谷歌浏览器
browser = webdriver.Chrome(service=service)
browser.get('https://www.taobao.com')                           #访问淘宝网页首页
shop_a = browser.find_element(By.XPATH,'//*[@id="ice-container"]/div[2]/div[2]/div[2]/div[1]/div/ul/li[7]/div[1]/a[1]') #定位到女鞋的商品链接
actions = ActionChains(browser)
actions.click(shop_a).perform()     #点击定位到的商品链接,打开新页面
browser.switch_to.window(browser.window_handles[-1])
shop_one = browser.find_element(By.XPATH,'//*[@id="ice-container"]/div[1]/div[1]/img')  #定位到第一款商品
actions1 = ActionChains(browser)
actions1.click(shop_one).perform()     #点击定位到的第二款鞋子商品
browser.switch_to.window(browser.window_handles[-1])        #跳转到商品详细页,会弹出登录表单

iframe_login = browser.find_element(By.XPATH,'//*[@class="J_MIDDLEWARE_FRAME_WIDGET"][2]/iframe')   # 定位iframe标签,由于iframe没有id,name这种唯一的属性,因此只能通过先定位,在切换实现
browser.switch_to.frame(iframe_login)           #切换到<frame>标签中的子页面,即登录表单
user_input = browser.find_element(By.XPATH,'//input[@placeholder="账号名/邮箱/手机号"]')###注意要更具规则自定义不要用器右键取到的XPATH
user_input.send_keys("123")                     #输入账号
time.sleep(5)                                   #等待5秒
browser.quit()                                  #关闭所有页面,退出浏览器驱动程序
'''
其中,switch_to.window()函数中browser.window_handles[-1]表示打开所有窗口中的最后一个窗口。
switch_to.frame()函数用于切换到<iframe>标签作为参数传入。
'''
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白雪公主的后妈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值