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

爬虫实现验证码登录古诗文网【爬虫学习day.02】

1.找到登录接口并查看参数


2.分析参数

from和email,pwd,denglu都是好找的,__VIEWSTATE和__VIEWSTATEGENERATOR的值存在于源代码中,验证码可以通过下载来获取


3.代码和分析

1.获取页面__VIEWSTATE和__VIEWSTATEGENERATOR的值

import requests
#获取页面__VIEWSTATE和__VIEWSTATEGENERATOR的值
url = 'https://www.gushiwen.cn/user/login.aspx?from=http://www.gushiwen.cn/user/collect.aspx'
headers = {
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36 Edg/129.0.0.0'
}
res = requests.get(url,headers=headers)
from lxml import etree
tree = etree.HTML(res.text)
__VIEWSTATE = tree.xpath('//input[@id = "__VIEWSTATE"]/@value')[0]
__VIEWSTATEGENERATOR = tree.xpath('//input[@id = "__VIEWSTATEGENERATOR"]/@value')[0]
print(__VIEWSTATE)
print(__VIEWSTATEGENERATOR)

2.获取验证码

# 获取验证码
imgsrc = tree.xpath('//img[@id = "imgCode"]/@src')[0]
imgsrc = 'https://www.gushiwen.cn/' + imgsrc
session = requests.session()
res = session.get(imgsrc)
with open('code.jpg', 'wb') as f:
    f.write(res.content)
    f.close()
code = input("输入验证码:")

3.登录

#登录
login_src = 'https://www.gushiwen.cn/user/login.aspx?from=http%3a%2f%2fwww.gushiwen.cn%2fuser%2fcollect.aspx'
email_ = input("输入手机号:")
pwd_ = input("输入密码:")
data = {
    '__VIEWSTATE': __VIEWSTATE,
    '__VIEWSTATEGENERATOR': __VIEWSTATEGENERATOR,
    'from: http': '//www.gushiwen.cn/user/collect.aspx',
    'email': email_,
    'pwd': pwd_,
    'code':code ,
    'denglu': ' 登录',
}
res = session.post(login_src,data=data,headers=headers)

4.完整代码


import requests

# 获取页面__VIEWSTATE和__VIEWSTATEGENERATOR的值
url = 'https://www.gushiwen.cn/user/login.aspx?from=http://www.gushiwen.cn/user/collect.aspx'
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36 Edg/129.0.0.0'
}
res = requests.get(url, headers=headers)
from lxml import etree
tree = etree.HTML(res.text)
__VIEWSTATE = tree.xpath('//input[@id = "__VIEWSTATE"]/@value')[0]
__VIEWSTATEGENERATOR = tree.xpath('//input[@id = "__VIEWSTATEGENERATOR"]/@value')[0]
# print(__VIEWSTATE)
# print(__VIEWSTATEGENERATOR)

# 获取验证码
import urllib.request
imgsrc = tree.xpath('//img[@id = "imgCode"]/@src')[0]
imgsrc = 'https://www.gushiwen.cn/' + imgsrc
urllib.request.urlretrieve(imgsrc,'code.jpg')
code = input("输入验证码:")

#登录
login_src = 'https://www.gushiwen.cn/user/login.aspx?from=http%3a%2f%2fwww.gushiwen.cn%2fuser%2fcollect.aspx'
email_ = input("输入手机号:")
pwd_ = input("输入密码:")
data = {
    '__VIEWSTATE': __VIEWSTATE,
    '__VIEWSTATEGENERATOR': __VIEWSTATEGENERATOR,
    'from: http': '//www.gushiwen.cn/user/collect.aspx',
    'email': email_,
    'pwd': pwd_,
    'code':code ,
    'denglu': ' 登录',
}
#将信息保存
res = requests.post(login_src,data=data,headers=headers)
with open('gushi.html','w') as f:
    f.write(res.text)
    f.close()


4.效果预览

1.获取到的验证码


2.输入信息


3.查看保存的html文件

成功!!!


http://www.kler.cn/news/358257.html

相关文章:

  • 【高等数学】无穷级数
  • Win11 安装 PostgreSQL 报错解决方案
  • 【小洛的VLOG】Web 服务器高并发压力测试(Reactor模型测试)
  • 【环境搭建】Windows系统中使用VScode在虚拟机ubuntu系统中进行开发的方法
  • C++ 算法学习——1.9 Kruskal算法
  • 平安养老险深圳分公司:创新养老服务,深入践行金融为民
  • SQLite数据库在Android中的应用及操作方式
  • Python | Leetcode Python题解之第486题预测赢家
  • leetcode day1
  • Python Django 查询集的延迟加载特性
  • BERT论文关键点解读与常见疑问
  • 无人机之自主飞行关键技术篇
  • 苍穹外卖学习笔记(二十五)
  • Vue前置基础
  • 2024软件测试面试800题(答案+文档)
  • list(1)
  • 设计模式一--单例设计模式
  • WebStorm小白下载安装教程
  • Flink窗口分配器WindowAssigner
  • centOS实用命令