爬虫_request_cookie登录(隐藏域和验证码)
#通过登录然后进入到主页面 # 通过找登录接口我们发现登录的时候需要的参数很多 # __VIEWSTATE: Q9zeukk7PE5h9KCMT1uBtHMfNp6+Kfkwk5KywR928SJ/NJwdBGx04xq662yh/fA3/UuhXe7hlF0C19KQ3PHIFzj37k4o/UHDvS7o/9a9hYtuGlQcQDUlyasgnsk= # __VIEWSTATEGENERATOR: C93BE1AE # from: http://so.gushiwen.cn/user/collect.aspx # email: 360532178@qq.com # pwd: ******** # code: f8ko # denglu: 登录 # __VIEWSTATE、__VIEWSTATEGENERATOR、code 是一个可以变化的量 # 难点: # (1)__VIEWSTATE、__VIEWSTATEGENERATOR 一般情况看不到的数据都是在页面的源码中 # 我们观察到这两个数据在页面的源码中,所以我们需要获取页面的源码,然后进行解析就可以获取了 # (2)验证码 import requests # 这是登录界面的url地址 url = 'https://so.gushiwen.cn/user/login.aspx?from=http%3a%2f%2fso.gushiwen.cn%2fuser%2fcollect.aspx' headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.67 Safari/537.36' } # 获取页面的源码 response = requests.get(url=url,headers=headers) content = response.text # 解析页面源码 获取__VIEWSTATE、__VIEWSTATEGENERATOR 的值 from bs4 import BeautifulSoup soup = BeautifulSoup(content,'lxml') # print(soup) # 获取__VIEWSTATE值 viewstate = soup.select('#__VIEWSTATE')[0].attrs.get('value') # 获取__VIEWSTATEGENERATOR值 viewstategenerator = soup.select('#__VIEWSTATEGENERATOR')[0].attrs.get('value') # print('viewstate>>',viewstate) # print('viewstategenerator>>',viewstategenerator) # 获取验证码图片 code = soup.select('#imgCode')[0].attrs.get('src') code_url = 'https://so.gushiwen.cn'+code # print('code_url>>',code_url) #****有坑!!!! # import urllib.request # 下载图片 # urllib.request.urlretrieve(url=code_url,filename='code.jpg') # 利用session将两次请求地址变成一样的 session = requests.session() # 验证码的url的内容 response_code = session.get(code_url) # 注意此时要使用二进制数据,因为我们要使用的图片的下载 content_code = response_code.content # wb的模式就是将二进制数据写入到文件 with open('code.jpg','wb')as fp: fp.write(content_code) # 获取了验证码的图片后,下载到本地然后观察验证码,观察之后然后在控制台输入这个验证码就可以将这个值给 # code的参数,就可以登录 code_name = input('请输入你的验证码') # 点击登录 data_post = { '__VIEWSTATE': viewstate, '__VIEWSTATEGENERATOR': viewstategenerator, 'from': 'http://so.gushiwen.cn/user/collect.aspx', 'email': '360532178@qq.com', 'pwd': '自己的密码', 'code': code_name, 'denglu': '登录' } response_post = session.post(url=url,headers=headers,data=data_post) content_post = response_post.text with open('gushiwen.html','w',encoding='utf-8')as fp: fp.write(content_post)
运行结果
输入验证码后跳过登录
可以利用“超级鹰验证码”获取验证码内容
http://www.chaojiying.com/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
2021-05-27 JS 动态设置radio赋值和取值
2021-05-27 Golang 数组的使用