发布时间:2023-11-08 15:30
本节要讲解如下图所示的滑块验证码(更为复杂的滑动拼图验证码在2.4节介绍)。这种验证码机制比较简单:将滑块拖动到滑轨的最右端即可完成验证,如下图所示。如果未将滑块拖动到滑轨的最右端,则无法通过验证,验证失败后滑块会回到起始位置。
其中的关键是需要用Selenium库模拟鼠标拖动滑块滑动一定的距离。因为滑块的起始位置和滑轨的起始位置相同,所以滑块需要移动的距离等于滑轨的跨度减去滑块的宽度。下面就来利用开发者工具查看滑轨和滑块的宽度。
在浏览器中打开本书配套代码文件中为滑块验证码搭建的本地网页文件“index.html”,打开开发者工具,然后用元素选择按钮选中整个滑轨,此时的界面如下图所示。可以看到其中显示了滑轨的尺寸和颜色等属性。要查看滑轨的尺寸,有两种方法:图中箭头所示。
下图开始编写代码。首先用Selenium库打开网页,代码如下:
from selenium import webdriver
browser = webdriver.Chrome()
url = r\'D:\\works\\python_crawl1\\《Python爬虫(进阶与进通)》代码汇总\\2.验证码反爬\\3.滑块验证码\\index.html\'
browser.get(url) #用模拟浏览器打开网页
huakuai = browser.find_element_by_xpath(\'//*[@id=\"code-box\"]/span\')
action = webdriver.ActionChains(browser) # 启动动作链
action.click_and_hold(huakuai).perform() #按住滑块
action.move_by_offset(260,0) #移动滑块,其中的260是之前计算出来的需要滑动的距离
action.release().perform() #释放滑块
from selenium import webdriver
import time
# 1.访问网址
browser = webdriver.Chrome()
url = r\'D:\\works\\python_crawl1\\《Python爬虫(进阶与进通)》代码汇总\\2.验证码反爬\\3.滑块验证码\\index.html\'
browser.get(url) #用模拟浏览器打开网页
# 2.定位滑块
huakuai = browser.find_element_by_xpath(\'//*[@id=\"code-box\"]/span\')
# 3.开始滑动
action = webdriver.ActionChains(browser) # 启动动作链
action.click_and_hold(huakuai).perform() #按住滑块
time.sleep(2)
action.move_by_offset(260,0) #移动滑块,其中的260是之前计算出来的需要滑动的距离
action.release().perform() #释放滑块