大学三年第一次の博客,最后几个月记录下成长轨迹⑧。
备战2021年10月底金砖数据分析与可视化技术应用赛项,记录这个月学习的部分爬虫知识。
共勉ε≡٩(๑>₃<)۶
参考bolg:https://www.jianshu.com/p/954eeb0face9
实验网站:携程 (https://passport.ctrip.com/user/login?)
python 3.8.7
selenium 3.141.0
导入本次要用到的两个库webdriver和ActionChains
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
导入驱动(本人使用的是谷歌浏览器所以导入的是谷歌驱动)
driver = webdriver.Chrome("chromedriver.exe")
设置等待时间
driver.implicitly_wait(20)
打开网页并使窗口最大化
driver.get("https://passport.ctrip.com/user/login?")
driver.maximize_window()
输入账号密码
account = "test"
password = "test"
driver.find_element_by_xpath('//*[@id="nloginname"]').send_keys(account)
driver.find_element_by_xpath('//*[@id="npwd"]').send_keys(password)
获取到滑块与滑块区域
btn= driver.find_element_by_xpath('//*[@id="sliderddnormal"]/div[1]/div[2]')
btn_area = driver.find_element_by_xpath('//*[@id="sliderddnormal"]')
执行拖动
这里使用到了ActionChains的drag_and_drop_by_offset方法
里面三个参数,分别是要拖动的元素、x与y轴的偏移量
ActionChains(driver).drag_and_drop_by_offset(btn,btn_area.size['width'],btn_area.size['height']).perform()
关于drag_and_drop_by_offset参数可以参考action_chains源代码
"""
Holds down the left mouse button on the source element,
then moves to the target offset and releases the mouse button.
:Args:
- source: The element to mouse down.
- xoffset: X offset to move to.
- yoffset: Y offset to move to.
"""
完整代码
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
driver = webdriver.Chrome("chromedriver.exe")
driver.implicitly_wait(20)
driver.get("https://passport.ctrip.com/user/login?")
driver.maximize_window()
account = "test"
password = "test"
driver.find_element_by_xpath('//*[@id="nloginname"]').send_keys(account)
driver.find_element_by_xpath('//*[@id="npwd"]').send_keys(password)
slider = driver.find_element_by_xpath('//*[@id="sliderddnormal"]/div[1]/div[2]')
slider_area = driver.find_element_by_xpath('//*[@id="sliderddnormal"]')
ActionChains(driver).drag_and_drop_by_offset(slider,slider_area.size['width'],slider.size['height']).perform()
因为携程更新了反扒,所以执行完成后的结果应该如下
接下来的图片点击的验证我会后续完善(挖坑)