我想创建一个程序,我可以使用python检查我的成绩,我有网络抓取数据的代码,但我不知道如何登录这个特定的网站。该网站是https://hac.chicousd.org/LoginParent.aspx?page=Default.aspx,如果您需要,我可以提供我的用户名和密码。我尝试过使用request和urllib,但都没有工作。我感谢任何帮助。
答案 0 :(得分:2)
尝试使用mechanical soup。它允许您像平常一样浏览网站。
答案 1 :(得分:0)
正如评论中所指出的,可能是使用浏览器操作工具selenium
。但是,您也可以使用requests.Sessions
发送包含电子邮件有效内容的POST
请求,然后针对您要查看的任何门户网站页面发出GET
请求:
import requests
r = requests.Session()
payload = {'portalAccountUsername':'yoursutdentemail@school.com'}
r.post('https://hac.chicousd.org/LoginParent.aspx?page=Default.aspx', data = payload)
然后,使用r
实例,您可以向门户网站上仅向经过身份验证的用户显示的页面发送GET
请求:
data = r.get('https://hac.chicousd.org/some_student_only_page').text
请注意,payload
词典的键必须都是网站HTML中有效的<input>
"name"
值。
答案 2 :(得分:0)
正如其他人所说,你可以使用selenium
。您还应该使用time
在输入密码前几秒钟停止程序。首先在命令提示符pip install selenuim
和webdriver(这里是chrome pip install chromedriver_installer
的代码)中安装selenium。然后你可以在你的代码中使用它们。
import selenium
from selenium import webdriver
import time
from time import sleep
然后,您应该使用网络驱动程序打开网页
browser = webdriver.Chrome('C:\\Users...\\chromedriver.exe')
browser.get('The website address')
下一步是在网页上找到元素的名称,以编写用户名,密码和按钮的路径
username = browser.find_element_by_id('portalAccountUsername')
username.send_keys('your email')
next = browser.find_element_by_xpath('//*[@id="next"]')
next.click()
password = browser.find_element_by_id('portalAccountPassword')
time.sleep(2)
password.send_keys('your password')
sing_in = browser.find_element_by_xpath('//*[@id="LoginButton"]')
sing_in.click()