python网络爬虫(第七章:iframe处理+动作链)
1.selenium处理 iframe一张页面当中可以嵌套一张子页面,可是通过iframe标签实现子页面的嵌套https://www.runoob.com/try/try.php?filename=jqueryui-api-droppableiframe标签中的标签定位和一般的网页标签定位的区别是:一般的网页标签定位:driver.find_element_by_id('XXX')iframe标签
·
1.selenium处理 iframe
一张页面当中可以嵌套一张子页面,可是通过iframe标签实现子页面的嵌套
https://www.runoob.com/try/try.php?filename=jqueryui-api-droppable
iframe标签中的标签定位和一般的网页标签定位的区别是:
一般的网页标签定位:driver.find_element_by_id('XXX')
iframe标签中的标签定位:
driver.switch_to.frame('AAA')
driver.find_element_by_id('XXX')
备注:仅仅是添加了switch_to.frame()实现iframe()标签中的标签定位
2.动作链
动作链【拖动】使用场景:网页用户登录时的滑块验证(也是一种验证方式)
步骤如下:
step1:导包 from selenium.webdriver import ActionChains
step2:实例化动作链 action = ActionChains(driver)
step3:点击并长按动作链 ActionChains.click_and_holds(定位的拖动标签)
step4:滑块移动 ActionChains.move_to_offset(x,y)
step5:执行滑动操作 .perform()
step6:释放动作链对象 action.release()
3.综合案例
from selenium import webdriver
from time import sleep
#导入动作链对应的类
from selenium.webdriver import ActionChains
#1.获取浏览器对象
driver = webdriver.Chrome('./chromedriver.exe')
#2.通过该浏览器发送url请求
driver.get('https://www.runoob.com/try/try.php?filename=jqueryui-api-droppable')
#3.定位标签 如果是整页的数据,则page_text = driver.page_source,但是这里还是要继续解析页面信息
#如果定位的标签存在于iframe标签之中,则必须使用switch_to.frame(id)
driver.switch_to.frame('iframeResult') #driver.switch_to.frame(id)
div = driver.find_element_by_id('draggable')
#动作链:动作链其实就是拖动【如会员登录的时候,会出现滑块移动】
# 1.import selenium.webdriver from ActionChains
# 2.action = ActionChains(driver)
# 3.点击且长按需要拖动的标签:action.click_and_hold(标签)
# 4.标签拖动【是根据像素进行拖动】,使用move_by_offset(x,y)
# 5.perfor.() 让动作立即执行; #标签移动的像素确定好以后,使用.perform()执行移动的像素
# 6.释放动作链对象 action.release()
action = ActionChains(driver)
#点击长按指定的标签
action.click_and_hold(div)
for i in range(5):
action.move_by_offset(17,0).perform()
sleep(0.5)
#释放动作链对象
action.release()
#关闭
driver.quit()
更多推荐
已为社区贡献3条内容
所有评论(0)