13.request-session,验证码

使用session使得请求变成一个对象

注意登录页面隐藏的参数
爬取古诗文登录页面

import requests
from bs4 import BeautifulSoup

"""
页面隐藏内容
__VIEWSTATE: Cm3EoJnfUOdqhItuiW2nxIsumGqsBQJ/0awn+S9J/ZtYzavs+rk+qR0Bvqi7NiTPLaW6bL4nP7cfP83DKAho5jTvhCv5O4MWGiiaYOHjCFIQP1tF3PZx5s1r5P0=
__VIEWSTATEGENERATOR: C93BE1AE

from: http://so.gushiwen.cn/user/collect.aspx
email: gchencode@126.com
pwd: qq481111111
验证码
code: f950

denglu: 登录
"""

# 访问首页获取页面隐藏内容
url = "https://so.gushiwen.cn/user/login.aspx?from=http://so.gushiwen.cn/user/collect.aspx"
headers = {
    "user-agent": "...",
}
response = requests.get(url=url, headers=headers)
content = response.text

soup = BeautifulSoup(content, "lxml")
viewstate = soup.select("#__VIEWSTATE")[0].attrs.get('value')
viewstategenerator = soup.select("#__VIEWSTATEGENERATOR")[0].attrs.get('value')

# 获取验证码图片
code_url = 'https://so.gushiwen.cn' + soup.select("#imgCode")[0].attrs.get('src')
# request的session()方法通过session的返回值,使得请求变成一个对象
session = requests.session()
response_code = session.get(code_url)
# 使用二进制数据下载图片
content_code = response_code.content
with open("code.jpg", "wb") as fp:
    fp.write(content_code)

code = input("请输入你的验证码")

url_post = "https://so.gushiwen.cn/user/login.aspx?from=http://so.gushiwen.cn/user/collect.a"
data_post = {
    "__VIEWSTATE": viewstate,
    "__VIEWSTATEGENERATOR": viewstategenerator,
    "from": "http://so.gushiwen.cn/user/collect.aspx",
    "email": "邮箱@126.com",
    "pwd": "密码",
    "code": code,
    "denglu": "登录"
}
response_post = session.post(url=url, headers=headers, data=data_post)
content_post = response_post.text
with open("古诗文登录.html", 'w', encoding='utf8') as f:
    f.write(content_post)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值