前言:最近对爬虫感兴趣,看了崔的爬虫教程书,学到了滑块验证。跟着做的过程中突然想起刚学的时候,爬猫眼电影总是跳转验证码,学完一下opencv库的使用,想着复仇一下。
我首先编写简单的代码验证猫眼跳转的验证码,地址为猫眼验证码
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
# 创建一个Chrome浏览器实例
bro = webdriver.Chrome()
# 打开指定网页
bro.get('https://tfz.maoyan.com/yamaha/verify?requestCode=2238d341fa6a672f5\f54f43dd866ed724ftf7&redirectURL=https%3A%2F%2Fwww.maoyan.com%2Ffilms%3FshowType%3D3#/')
# 等待元素加载,最长等待时间为20秒
wait = WebDriverWait(bro, 10)
print("对象实例创建成功")
try:
# 等待滑块加载并可点击
slider = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, ".body-wrap .tc-drag .tc-drag-button .tc-drag-thumb")))
# 点击滑块
slider.click()
print("滑块点击成功")
except Exception as e:
# 打印错误信息
print(f"Error: {e}")
# 打印当前页面的HTML
# print(bro.page_source)
# 关闭浏览器
bro.quit()
无论选择的是什么元素,程序始终会报错。耗费大量时间后仍然没有取得答案,于是恳请各位佬给点提示或者指导。
代码方面
slider = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, ".body-wrap .tc-drag .tc-drag-button .tc-drag-thumb")))
- 更改上述代码学则的方式,用过CLASS_NAME, CSS_SELECTOR, ID等方式。----> 报错
- 更改后面选择的元素,选择过刷新,关闭,以及滑块(均是通过控制台元素选择是样式表里面的css选择器比如滑块的选择器为)。 ----> 报错
- 更改后面选择的元素,选择body。 ----> 成功
网站方面
- 选择我自己搭建的网站,进行点击操作。 ----> 成功
- 选择geetest网站注册界面的验证码点击操作。 ----> 成功
打印下
bro.page_source
就能发现问题。IFrame解决方案:
拖动的话。这块可能会比较麻烦,之前的淘宝验证码 会校验拖动的速度等,比较复杂。