如何使用python登录网站并刮取数据

时间:2018-05-05 04:04:18

标签: python web-scraping

我想创建一个程序,我可以使用python检查我的成绩,我有网络抓取数据的代码,但我不知道如何登录这个特定的网站。该网站是https://hac.chicousd.org/LoginParent.aspx?page=Default.aspx,如果您需要,我可以提供我的用户名和密码。我尝试过使用request和urllib,但都没有工作。我感谢任何帮助。

3 个答案:

答案 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()