【Python从入门到进阶】使用requests的Cookie登录古诗文网站

需要注意的是获取验证码不能用requests,而是session

import requests
from bs4 import BeautifulSoup

# __VIEWSTATE: /seNtJrexUAvx4/W7G3vYOBdV145buSzmPFE1iFe+FKqyJtArfEdTOHf+PRvGAMQIBrd2I4MfwMw79Ek0uR3aNhuDkdv6nFQLwqUFOCCFuSiyz2WEuUeixFs0c7RiVtRJXbjaZGgyNC0mk3eFQkjuDUpI14=
# __VIEWSTATEGENERATOR: C93BE1AE
# from: http://www.gushiwen.cn/user/collect.aspx
# email: 13592199535@163.com
# pwd: 123456
# code: yfua
# denglu: 登录



# 这是登陆页面的url地址
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/128.0.0.0 Safari/537.36",
}
# 获取页面的源码
response = requests.get(url=url, headers=headers)
content = response.text

# 解析页面源码  然后获取_VIEWSTATE   __VIEWSTATEGENERATOR
soup = BeautifulSoup(content, 'lxml')

# 获取_VIEWSTATE
viewstate = soup.select('#__VIEWSTATE')[0]['value']
# .attrs.get('value')
# print(viewstate)

# 获取__VIEWSTATEGENERATOR
viewstategenerator = soup.select('#__VIEWSTATEGENERATOR')[0]['value']
# print(viewstategenerator)

code = soup.select('#imgCode')[0].attrs.get('src')
code_url = 'https://www.gushiwen.cn/' + code

# 有坑
# import urllib.request
# urllib.request.urlretrieve(url=code_url,filename='code.jpg')
# requests里面有一个方法 session()  通过session的返回值 就能使用请求变成一个对象

session = requests.session()
# 验证码的url的内容
response_code = session.get(code_url)
# 注意此时要使用二进制数据  因为我们要使用的是图片的下载
content_code = response_code.content
# wb的模式就是将二进制数据写入到文件
with open('088-code.jpg', 'wb') as f:
    f.write(content_code)

# 获取了验证码的图片之后 下载到本地 然后观察验证码  观察之后 然后在控制台输入这个验证码 就可以将这个值给
# code的参数 就可以登陆

code_name = input('请输入你的验证码:')

url_post = 'https://www.gushiwen.cn/user/login.aspx?from=http%3a%2f%2fwww.gushiwen.cn%2fuser%2fcollect.aspx'

data = {
    '__VIEWSTATE': viewstate,
    '__VIEWSTATEGENERATOR': viewstategenerator,
    'from': 'http://www.gushiwen.cn/user/collect.aspx',
    'email': '13592199535@163.com',
    'pwd': 'qiao123..',
    'code': code_name,
    'denglu': '登录',
}

response_post = session.post(url=url_post, data=data, headers=headers)

content_post = response_post.text

with open('088-gsw.html', 'w', encoding='utf8') as fp:
    fp.write(content_post)

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值