首页 > 解决方案 > 抓取我的学校网站以获取成绩

问题描述

我需要帮助尝试在 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)

标签: pythonweb-scrapingpython-requests

解决方案


推荐阅读