py爬虫绕过猫眼验证码时,无法选择验证码内的元素?

新手上路,请多包涵
前言:最近对爬虫感兴趣,看了崔的爬虫教程书,学到了滑块验证。跟着做的过程中突然想起刚学的时候,爬猫眼电影总是跳转验证码,学完一下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")))

  1. 更改上述代码学则的方式,用过CLASS_NAME, CSS_SELECTOR, ID等方式。----> 报错
  2. 更改后面选择的元素,选择过刷新,关闭,以及滑块(均是通过控制台元素选择是样式表里面的css选择器比如滑块的选择器为)。 ----> 报错
  3. 更改后面选择的元素,选择body。 ----> 成功

网站方面

  1. 选择我自己搭建的网站,进行点击操作。 ----> 成功
  2. 选择geetest网站注册界面的验证码点击操作。 ----> 成功

如果是由于我个人疏忽而导致的简答问题,还请大佬高抬贵手,点拨我之后在喷我。

阅读 1.7k
avatarAI BotBETA

这个链接可能存在安全风险,为了保护您的设备和数据安全,请避免访问此链接。

2 个回答

打印下bro.page_source就能发现问题。IFrame

解决方案:

time.sleep(2)
# 切换 iframe
ifreame = bro.find_element(By.ID, "tcaptcha_iframe")
bro.switch_to.frame(ifreame)

拖动的话。这块可能会比较麻烦,之前的淘宝验证码 会校验拖动的速度等,比较复杂。

ActionChains(bro).drag_and_drop_by_offset(slider, 20, 0).perform()

尝试使用ddddocr

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏