鱼C论坛

 找回密码
 立即注册
查看: 2608|回复: 22

[已解决]关于爬虫参数验证码正确但爬取页面显示验证码错误

[复制链接]
发表于 2021-8-7 22:09:16 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
如图是存储的验证码图片:
微信图片_20210807220533.png
程序输出的验证码:
微信图片_20210807220530.png
存储的网页信息:
微信图片_20210807220535.png
源代码:(稍微隐藏了一下密码,不过一定没输错)
微信图片_20210807220525.png
最佳答案
2021-8-8 08:35:08
本帖最后由 1q23w31 于 2021-8-8 08:36 编辑
菜de嚣张 发表于 2021-8-7 23:05
你看,这个没显示验证错误,但是界面还是一样

  1. #其中yanzheng函数返回的是str类型的验证码
  2. import requests
  3. from yanzheng import yanzhengget
  4. from lxml import etree
  5. #分装识别图片
  6. headers={
  7.     'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'
  8.     }
  9. url='https://so.gushiwen.cn/user/login.aspx?from=http://so.gushiwen.cn/user/collect.aspx'
  10. session = requests.Session()
  11. response1=session.get(url,headers=headers).text
  12. tree=etree.HTML(response1)
  13. image_url = 'https://so.gushiwen.cn'+tree.xpath('//*[@id="imgCode"]/@src')[0]
  14. image=session.get(image_url,headers=headers).content
  15. #保存了验证码图片
  16. with open('./yanzheng.jpg','wb')as f:
  17.     f.write(image)
  18. thecode = yanzhengget('./yanzheng.jpg',1902)
  19. thecode = input("验证码:")data={
  20.     '__VIEWSTATE':'yy1mHtq84x6Uv/cSRZnkq90uDVg5JsYyXUgjqu5FE7vfcm840Lc306owopK6yka/wK3YaBFAst6KglZLwbJrUy1DqlOuobS/OzxznhO50shQmbg19s0MqqquYh4=',
  21.     '__VIEWSTATEGENERATOR':'C93BE1AE',
  22.     'from':'http://so.gushiwen.cn/user/collect.aspx',
  23.     'email':'334026394@qq.com',
  24.     'pwd':'qw123456',
  25.     'code':thecode,
  26.     'denglu':'登录'
  27.      }
  28. url='https://so.gushiwen.cn/user/login.aspx?from=http%3a%2f%2fso.gushiwen.cn%2fuser%2fcollect.aspx'
  29. print(thecode)
  30. response=session.post(url,data,headers=headers).text
  31. with open('古诗.html','w',encoding='utf-8')as f:
  32.     f.write(response)
复制代码

测试过了,你给的密码错的,没有问题
2021-8-8 8-36-30.png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-8-7 22:28:15 | 显示全部楼层
你没有携带cookie,没有做会话保持
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-7 22:36:31 | 显示全部楼层
代码发全
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-8-7 22:49:08 | 显示全部楼层
11.png
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-7 22:49:43 | 显示全部楼层


发源代码哦
图片不能改
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-8-7 22:50:09 | 显示全部楼层
1q23w31 发表于 2021-8-7 22:28
你没有携带cookie,没有做会话保持

这是什么意思呢?就算我的参数都全了也会失败吗
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-8-7 22:50:39 | 显示全部楼层

补上了,抱歉
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-7 22:52:33 | 显示全部楼层
菜de嚣张 发表于 2021-8-7 22:50
这是什么意思呢?就算我的参数都全了也会失败吗

提交的cookie和获取验证码的cookie不一致,服务器认为不是同一个设备
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-8-7 22:53:29 | 显示全部楼层
1q23w31 发表于 2021-8-7 22:49
发源代码哦
图片不能改

#其中yanzheng函数返回的是str类型的验证码
import requests
from yanzheng import yanzhengget
from lxml import etree
#分装识别图片
headers={
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'
    }
url='https://so.gushiwen.cn/user/login.aspx?from=http://so.gushiwen.cn/user/collect.aspx'
response1=requests.get(url,headers=headers).text
tree=etree.HTML(response1)
image_url = 'https://so.gushiwen.cn'+tree.xpath('//*[@id="imgCode"]/@src')[0]
image=requests.get(image_url,headers=headers).content
#保存了验证码图片
with open('./yanzheng.jpg','wb')as f:
    f.write(image)
thecode = yanzhengget('./yanzheng.jpg',1902)
data={
    '__VIEWSTATE':'yy1mHtq84x6Uv/cSRZnkq90uDVg5JsYyXUgjqu5FE7vfcm840Lc306owopK6yka/wK3YaBFAst6KglZLwbJrUy1DqlOuobS/OzxznhO50shQmbg19s0MqqquYh4=',
    '__VIEWSTATEGENERATOR':'C93BE1AE',
    'from':'http://so.gushiwen.cn/user/collect.aspx',
    'email':'334026394@qq.com',
    'pwd':'qw123456',
    'code':thecode,
    'denglu':'登录'
     }
url='https://so.gushiwen.cn/user/login.aspx?from=http%3a%2f%2fso.gushiwen.cn%2fuser%2fcollect.aspx'
print(thecode)
response=requests.get(url,data,headers=headers).text
with open('古诗.html','w',encoding='utf-8')as f:
    f.write(response)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-8-7 22:55:01 | 显示全部楼层
1q23w31 发表于 2021-8-7 22:52
提交的cookie和获取验证码的cookie不一致,服务器认为不是同一个设备

可是我获取验证码图片也是用的程序,登录也是程序,这样的话不是应该是一样的吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-7 22:56:38 | 显示全部楼层
菜de嚣张 发表于 2021-8-7 22:53
#其中yanzheng函数返回的是str类型的验证码
import requests
from yanzheng import yanzhengget
  1. #其中yanzheng函数返回的是str类型的验证码
  2. import requests
  3. from yanzheng import yanzhengget
  4. from lxml import etree
  5. #分装识别图片
  6. headers={
  7.     'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'
  8.     }
  9. url='https://so.gushiwen.cn/user/login.aspx?from=http://so.gushiwen.cn/user/collect.aspx'
  10. session = requests.Session()
  11. response1=session.get(url,headers=headers).text
  12. tree=etree.HTML(response1)
  13. image_url = 'https://so.gushiwen.cn'+tree.xpath('//*[@id="imgCode"]/@src')[0]
  14. image=session.get(image_url,headers=headers).content
  15. #保存了验证码图片
  16. with open('./yanzheng.jpg','wb')as f:
  17.     f.write(image)
  18. thecode = yanzhengget('./yanzheng.jpg',1902)
  19. data={
  20.     '__VIEWSTATE':'yy1mHtq84x6Uv/cSRZnkq90uDVg5JsYyXUgjqu5FE7vfcm840Lc306owopK6yka/wK3YaBFAst6KglZLwbJrUy1DqlOuobS/OzxznhO50shQmbg19s0MqqquYh4=',
  21.     '__VIEWSTATEGENERATOR':'C93BE1AE',
  22.     'from':'http://so.gushiwen.cn/user/collect.aspx',
  23.     'email':'334026394@qq.com',
  24.     'pwd':'qw123456',
  25.     'code':thecode,
  26.     'denglu':'登录'
  27.      }
  28. url='https://so.gushiwen.cn/user/login.aspx?from=http%3a%2f%2fso.gushiwen.cn%2fuser%2fcollect.aspx'
  29. print(thecode)
  30. response=session.get(url,data,headers=headers).text
  31. with open('古诗.html','w',encoding='utf-8')as f:
  32.     f.write(response)
复制代码

试一下
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-7 22:58:01 | 显示全部楼层
菜de嚣张 发表于 2021-8-7 22:55
可是我获取验证码图片也是用的程序,登录也是程序,这样的话不是应该是一样的吗?

携带的身份信息不同,服务器就认为不是同一个人
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-8-7 23:04:47 | 显示全部楼层
这个没显示验证码错误,但还是没获得数据
2222.png
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-8-7 23:05:54 | 显示全部楼层
1q23w31 发表于 2021-8-7 22:58
携带的身份信息不同,服务器就认为不是同一个人

你看,这个没显示验证错误,但是界面还是一样
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-8 08:35:08 | 显示全部楼层    本楼为最佳答案   
本帖最后由 1q23w31 于 2021-8-8 08:36 编辑
菜de嚣张 发表于 2021-8-7 23:05
你看,这个没显示验证错误,但是界面还是一样

  1. #其中yanzheng函数返回的是str类型的验证码
  2. import requests
  3. from yanzheng import yanzhengget
  4. from lxml import etree
  5. #分装识别图片
  6. headers={
  7.     'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'
  8.     }
  9. url='https://so.gushiwen.cn/user/login.aspx?from=http://so.gushiwen.cn/user/collect.aspx'
  10. session = requests.Session()
  11. response1=session.get(url,headers=headers).text
  12. tree=etree.HTML(response1)
  13. image_url = 'https://so.gushiwen.cn'+tree.xpath('//*[@id="imgCode"]/@src')[0]
  14. image=session.get(image_url,headers=headers).content
  15. #保存了验证码图片
  16. with open('./yanzheng.jpg','wb')as f:
  17.     f.write(image)
  18. thecode = yanzhengget('./yanzheng.jpg',1902)
  19. thecode = input("验证码:")data={
  20.     '__VIEWSTATE':'yy1mHtq84x6Uv/cSRZnkq90uDVg5JsYyXUgjqu5FE7vfcm840Lc306owopK6yka/wK3YaBFAst6KglZLwbJrUy1DqlOuobS/OzxznhO50shQmbg19s0MqqquYh4=',
  21.     '__VIEWSTATEGENERATOR':'C93BE1AE',
  22.     'from':'http://so.gushiwen.cn/user/collect.aspx',
  23.     'email':'334026394@qq.com',
  24.     'pwd':'qw123456',
  25.     'code':thecode,
  26.     'denglu':'登录'
  27.      }
  28. url='https://so.gushiwen.cn/user/login.aspx?from=http%3a%2f%2fso.gushiwen.cn%2fuser%2fcollect.aspx'
  29. print(thecode)
  30. response=session.post(url,data,headers=headers).text
  31. with open('古诗.html','w',encoding='utf-8')as f:
  32.     f.write(response)
复制代码

测试过了,你给的密码错的,没有问题
2021-8-8 8-36-30.png
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-8-8 10:05:27 | 显示全部楼层
1q23w31 发表于 2021-8-8 08:35
测试过了,你给的密码错的,没有问题

啊抱歉,我改了一下,之前测试的确实没通过,qw123456789要不您再试试
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-8 10:40:50 | 显示全部楼层
981048327
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-8 10:57:26 | 显示全部楼层
菜de嚣张 发表于 2021-8-8 10:05
啊抱歉,我改了一下,之前测试的确实没通过,qw123456789要不您再试试

已成功登录
2021-8-8 10-56-15.png
不会改的话,加qq1260121341
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-8-8 10:58:12 | 显示全部楼层
1q23w31 发表于 2021-8-8 08:35
测试过了,你给的密码错的,没有问题

抱歉是我这边的问题,可是这个代码在获取图片的时候也用的session,而且图片网站也有set—cookie,这样的话不是会使得登录界面获得的cookie改变吗,我尝试把这句改为requests.get,但这样的话就错了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-8 10:59:51 | 显示全部楼层
菜de嚣张 发表于 2021-8-8 10:58
抱歉是我这边的问题,可是这个代码在获取图片的时候也用的session,而且图片网站也有set—cookie,这样的 ...

不用管cookie requests的session会帮你自动处理
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-20 14:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表