菜de嚣张 发表于 2021-8-7 22:09:16

关于爬虫参数验证码正确但爬取页面显示验证码错误

如图是存储的验证码图片:

程序输出的验证码:

存储的网页信息:

源代码:(稍微隐藏了一下密码,不过一定没输错)

1q23w31 发表于 2021-8-7 22:28:15

你没有携带cookie,没有做会话保持

suchocolate 发表于 2021-8-7 22:36:31

代码发全

菜de嚣张 发表于 2021-8-7 22:49:08

1q23w31 发表于 2021-8-7 22:49:43

菜de嚣张 发表于 2021-8-7 22:49


发源代码哦
图片不能改

菜de嚣张 发表于 2021-8-7 22:50:09

1q23w31 发表于 2021-8-7 22:28
你没有携带cookie,没有做会话保持

这是什么意思呢?就算我的参数都全了也会失败吗

菜de嚣张 发表于 2021-8-7 22:50:39

suchocolate 发表于 2021-8-7 22:36
代码发全

补上了,抱歉

1q23w31 发表于 2021-8-7 22:52:33

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

提交的cookie和获取验证码的cookie不一致,服务器认为不是同一个设备

菜de嚣张 发表于 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')
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)

菜de嚣张 发表于 2021-8-7 22:55:01

1q23w31 发表于 2021-8-7 22:52
提交的cookie和获取验证码的cookie不一致,服务器认为不是同一个设备

可是我获取验证码图片也是用的程序,登录也是程序,这样的话不是应该是一样的吗?

1q23w31 发表于 2021-8-7 22:56:38

菜de嚣张 发表于 2021-8-7 22:53
#其中yanzheng函数返回的是str类型的验证码
import requests
from yanzheng import yanzhengget


#其中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'
session = requests.Session()
response1=session.get(url,headers=headers).text
tree=etree.HTML(response1)
image_url = 'https://so.gushiwen.cn'+tree.xpath('//*[@id="imgCode"]/@src')
image=session.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=session.get(url,data,headers=headers).text
with open('古诗.html','w',encoding='utf-8')as f:
    f.write(response)
试一下

1q23w31 发表于 2021-8-7 22:58:01

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

携带的身份信息不同,服务器就认为不是同一个人

菜de嚣张 发表于 2021-8-7 23:04:47

这个没显示验证码错误,但还是没获得数据

菜de嚣张 发表于 2021-8-7 23:05:54

1q23w31 发表于 2021-8-7 22:58
携带的身份信息不同,服务器就认为不是同一个人

你看,这个没显示验证错误,但是界面还是一样

1q23w31 发表于 2021-8-8 08:35:08

本帖最后由 1q23w31 于 2021-8-8 08:36 编辑

菜de嚣张 发表于 2021-8-7 23:05
你看,这个没显示验证错误,但是界面还是一样

#其中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'
session = requests.Session()
response1=session.get(url,headers=headers).text
tree=etree.HTML(response1)
image_url = 'https://so.gushiwen.cn'+tree.xpath('//*[@id="imgCode"]/@src')
image=session.get(image_url,headers=headers).content
#保存了验证码图片
with open('./yanzheng.jpg','wb')as f:
    f.write(image)
thecode = yanzhengget('./yanzheng.jpg',1902)
thecode = input("验证码:")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=session.post(url,data,headers=headers).text
with open('古诗.html','w',encoding='utf-8')as f:
    f.write(response)

测试过了,你给的密码错的,没有问题

菜de嚣张 发表于 2021-8-8 10:05:27

1q23w31 发表于 2021-8-8 08:35
测试过了,你给的密码错的,没有问题

啊抱歉,我改了一下,之前测试的确实没通过,qw123456789要不您再试试

路神 发表于 2021-8-8 10:40:50

981048327

1q23w31 发表于 2021-8-8 10:57:26

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

已成功登录

不会改的话,加qq1260121341

菜de嚣张 发表于 2021-8-8 10:58:12

1q23w31 发表于 2021-8-8 08:35
测试过了,你给的密码错的,没有问题

抱歉是我这边的问题,可是这个代码在获取图片的时候也用的session,而且图片网站也有set—cookie,这样的话不是会使得登录界面获得的cookie改变吗,我尝试把这句改为requests.get,但这样的话就错了

1q23w31 发表于 2021-8-8 10:59:51

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

不用管cookie requests的session会帮你自动处理
页: [1] 2
查看完整版本: 关于爬虫参数验证码正确但爬取页面显示验证码错误