使用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)