当前位置: 首页 > 知识库问答 >
问题:

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

申昌勋
2024-08-04
前言:最近对爬虫感兴趣,看了崔的爬虫教程书,学到了滑块验证。跟着做的过程中突然想起刚学的时候,爬猫眼电影总是跳转验证码,学完一下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个答案

公英哲
2024-08-04

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

 类似资料:
  • 接口说明 验证验证码 如需调用,请访问 开发者文档 来查看详细的接口使用说明 该接口仅开放给已获取SDK的开发者 如开启https功能,请求地址的协议应改为https,如:https://www.example.com/wish3dearth/api/access/v1.0.0/getLicenseInfo API地址 GET /authcenter/api/verify/v1.0.0/check

  • Captcha中间件提供了验证码服务,他是一个 Tango 的插件。 安装 go get github.com/tango-contrib/captcha 示例 package main import ( "github.com/lunny/tango" "github.com/tango-contrib/captcha" "github.com/tango-contrib

  • 发送验证码支持 email 和 phone 非注册用户发送: POST /verifycodes/register 注册用户发送: POST /verifycodes 输入 名称 类型 描述 phone String 如果 email 不存在则必须,以 sms 模式给手机发送验证码。 email String 如果 phone 不存在则必须,以 mail 模式给邮箱发送验证码。 响应 Stat

  • 验证码验证 cmf_captcha_check($value, $id = "") 参数 $value:用户提交的验证码 $id:前台设置的验证码 id,默认为空,用户在前台只能定义整形的 id,最大为5 控制器使用 $captcha = $request->param('captcha'); if (cmf_captcha_check($captcha)) { echo "验证码正确"

  • 1.生成验证码 生成验证码的函数: sp_verifycode_img($imgparam,$imgattrs); 参数: $imgparam:控制验证码的样式,(默认值length=4&font_size=20&width=238&height=50&use_curve=1&use_noise=1) $imgattrs:生成的验证码img标签的原生属性,除src,onclick之外都可以设置,

  • 验证码验证 cmf_captcha_check($value, $id = "") 参数 $value:用户提交的验证码 $id:前台设置的验证码 id,默认为空,用户在前台只能定义整形的 id,最大为5 控制器使用 $captcha = $request->param('captcha'); if (cmf_captcha_check($captcha)) { echo "验证码正确"

  • 首先使用Composer安装think-captcha扩展包: composer require topthink/think-captcha 验证码的简单用法 扩展包内定义了一些常见用法方便使用,可以满足大部分常用场景,以下示例说明。 在模版内添加验证码的显示代码 <div>{:captcha_img()}</div> 或者 <div><img src="{:captcha_src()}" al

  • 我读过很多关于这方面的帖子,但我无法解决我的问题。当我试图验证zend表单验证码时,即使文本正确,也总是失败。下面是我的代码: 谢谢你的时间和帮助!! 我看到了一些不可靠的东西:当我在联系人操作中转储$_post时,我的结果是: 我刚刚输入的验证码甚至出现了,取而代之的是验证码凯!!?? 我觉得我需要删除这个captchaField,但不知道如何到目前为止! 我可以用JS做到这一点,但必须有一个干