python - 抓取我的学校网站以获取成绩
问题描述
我需要帮助尝试在 python 上进行网络抓取的两步身份验证。我不知道如何实质上单击按钮来接收文本,然后键入 python 代码。到目前为止,我可以使用学校的用户名和密码登录(出于明显的原因,我更改了值),但我不确定如何进行两步验证部分。我想做的就是得到我的成绩并将它们显示在我的控制台上。这是代码
import requests
from bs4 import BeautifulSoup
cookies = {
'JSESSIONID': 'node0bylg11etb77h1bn7znffwvw2z2556888.node0',
'BIGipServershibboleth.fullerton.edu_pool_http': '1822660489.18719.0000',
}
headers = {
'Connection': 'keep-alive',
'Cache-Control': 'max-age=0',
'sec-ch-ua': '"Chromium";v="94", "Google Chrome";v="94", ";Not A Brand";v="99"',
'sec-ch-ua-mobile': '?0',
'sec-ch-ua-platform': '"Windows"',
'Upgrade-Insecure-Requests': '1',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
'Sec-Fetch-Site': 'none',
'Sec-Fetch-Mode': 'navigate',
'Sec-Fetch-User': '?1',
'Sec-Fetch-Dest': 'document',
'Accept-Language': 'en-US,en;q=0.9',
}
params = (
('execution', 'e1s1'),
)
login_data = {
'j_username' : "myusername",
'j_password' : "password" `enter code here`
}
with requests.Session() as s:
url = 'https://shibboleth.fullerton.edu/idp/profile/SAML2/Redirect/SSO'
r = s.get(url, headers=headers, params=params, cookies=cookies)
soup = BeautifulSoup(r.content, 'html5lib')
login_data['LoginTextBox'] = soup.find('input' , attrs={'name': 'j_username'})['value']
r = s.post(url, data = login_data, headers=headers, params=params, cookies=cookies)
print(r.content)
解决方案
推荐阅读
- excel - Excel 宏到 Google 表格
- c++ - C++17 依赖名称不是类型,适用于 C++14
- python - 一定距离内的位置数
- sql - 将数据保存在变量中的查询
- node.js - Axios Basic Auth with API key Example in Node
- swift - 在 Swift 中重新激活 NSApplication 并取消隐藏 NSWindow 作为菜单栏应用程序?
- amazon-web-services - 如何处理 python lambda 中的超时?
- javascript - 如何访问在另一个 js 文件中的反应挂钩中完成的状态值
- c# - C# 在另一个位图上绘制位图时出现透明度问题
- javascript - Angular / Vue 等 UI 框架如何启用事件 $emit?