当前位置: 首页 > news >正文

【Python】02快速上手爬虫案例二:搞定验证码

文章目录

  • 前言
  • 1、不要相信什么验证码的库
  • 2、以古诗文网为例,获取验证码
    • 1)code_result.py
    • 2)gsw.py


前言

提示:以古诗文网为例,获取验证码:

登录:https://so.gushiwen.cn/user/login.aspx

在这里插入图片描述


1、不要相信什么验证码的库

首先:真的不要浪费时间,使用什么pytesseract库,什么ddddocr库。这些只能搞搞简单的,复杂点儿的都是搞不定。

比如,这样的,搞不定的:

在这里插入图片描述

直接使用打码平台吧,我这里使用的是:云码。

2、以古诗文网为例,获取验证码

1)code_result.py

code_result.py (云码的官方代码)代码如下:

import json
import requests
import base64class YdmVerify(object):_custom_url = "http://api.jfbym.com/api/YmServer/customApi"_token = "" #云码的token_headers = {'Content-Type': 'application/json'}def common_verify(self, image, verify_type="10110"):payload = {"image": base64.b64encode(image).decode(),"token": self._token,"type": verify_type}print(payload)resp = requests.post(self._custom_url, headers=self._headers, data=json.dumps(payload))print(resp.text)return resp.json()['data']['data']

2)gsw.py

获取验证码代码如下:

import requests
from lxml import etree
from code_result import YdmVerifyurl = "https://so.gushiwen.cn/user/login.aspx"
headers = {"User-Agent":"Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36"
}
response = requests.get(url=url,headers=headers).text
tree = etree.HTML(response)img_code = "https://so.gushiwen.cn"+tree.xpath('//*[@id="imgCode"]/@src')[0]
# 图片
image_byte = requests.get(url=img_code,headers=headers).content
with open('/Users/test/Downloads/python/code.png','wb') as fp:fp.write(image_byte)
# 云码打码
Y = YdmVerify()
with open("/Users/test/Downloads/python/code.png", 'rb') as f:img_content = f.read()
resp = Y.common_verify(img_content)
print(resp)

结果如下:

在这里插入图片描述

对应云码平台记录:

在这里插入图片描述
这是通用数字1-4位,其它类型和代码参考云码官方资料吧:

		代码:https://zhuce.jfbym.com/test/100.html# 数英汉字类型# 通用数英1-4位 10110# 通用数英5-8位 10111# 通用数英9~11位 10112# 通用数英12位及以上 10113# 通用数英1~6位plus 10103# 定制-数英5位~qcs 9001# 定制-纯数字4位 193# 中文类型# 通用中文字符1~2位 10114# 通用中文字符 3~5位 10115# 通用中文字符6~8位 10116# 通用中文字符9位及以上 10117# 定制-XX西游苦行中文字符 10107# 计算类型# 通用数字计算题 50100# 通用中文计算题 50101# 定制-计算题 cni 452

相关文章:

  • ST-Link调试器:功能、用途和引脚
  • 【干货】【常用电子元器件介绍】【电阻】(二)--敏感电阻器
  • 第二章 Git
  • PyTorch 添加 C++ 拓展
  • Redis 实际项目中的整合,记录各种用法
  • Unity | 渡鸦避难所-8 | URP 中利用 Shader 实现角色受击闪白动画
  • 写一份简单的产品说明书:格式和排版建议
  • 构建支持 gpu 的 jupyterlab docker 镜像
  • Typora 无法导出 pdf 问题的解决
  • 通过css隐藏popover的效果:即hover显示或隐藏另一个元素
  • 使用Electron打包vue文件变成exe应用程序
  • 跨平台Recorder录音插件:支持多种格式、音频可视化、实时上传、语音识别
  • 第二百八十八回
  • 小程序系列--14.小程序分包
  • C#学习笔记_数组
  • [分享]iOS开发-关于在xcode中引用文件夹右边出现问号的解决办法
  • [译] 理解数组在 PHP 内部的实现(给PHP开发者的PHP源码-第四部分)
  • 【Leetcode】104. 二叉树的最大深度
  • 【编码】-360实习笔试编程题(二)-2016.03.29
  • 2017年终总结、随想
  • Docker入门(二) - Dockerfile
  • Elasticsearch 参考指南(升级前重新索引)
  • iOS编译提示和导航提示
  • js正则,这点儿就够用了
  • MaxCompute访问TableStore(OTS) 数据
  • 多线程事务回滚
  • 全栈开发——Linux
  • 深度学习入门:10门免费线上课程推荐
  • 我的业余项目总结
  • 400多位云计算专家和开发者,加入了同一个组织 ...
  • const的用法,特别是用在函数前面与后面的区别
  • PostgreSQL之连接数修改
  • 阿里云服务器如何修改远程端口?
  • (02)Cartographer源码无死角解析-(03) 新数据运行与地图保存、加载地图启动仅定位模式
  • (5)STL算法之复制
  • (9)YOLO-Pose:使用对象关键点相似性损失增强多人姿态估计的增强版YOLO
  • (HAL库版)freeRTOS移植STMF103
  • (Matalb时序预测)PSO-BP粒子群算法优化BP神经网络的多维时序回归预测
  • (Redis使用系列) SpringBoot 中对应2.0.x版本的Redis配置 一
  • (附源码)spring boot网络空间安全实验教学示范中心网站 毕业设计 111454
  • (附源码)ssm基于微信小程序的疫苗管理系统 毕业设计 092354
  • (每日持续更新)jdk api之StringBufferInputStream基础、应用、实战
  • (数位dp) 算法竞赛入门到进阶 书本题集
  • (四)TensorRT | 基于 GPU 端的 Python 推理
  • (算法二)滑动窗口
  • (转)创业的注意事项
  • .gitignore文件—git忽略文件
  • .net core控制台应用程序初识
  • .NET Core中的去虚
  • .Net mvc总结
  • .NET Reactor简单使用教程
  • .NET 常见的偏门问题
  • /usr/bin/env: node: No such file or directory
  • []串口通信 零星笔记
  • [AIGC] Java 和 Kotlin 的区别