我正在尝试访问受密码登录名(用户名和密码)保护的html页面。我尝试使用请求,但似乎不起作用。
import r
import requests
def Login():
scrape_url = 'https://www.ecoledirecte.com/Eleves/3668/Notes'
login_url = 'https://www.ecoledirecte.com/login'
payload = {
'username': '***',
'password': '***'
}
with requests.Session() as session:
post = session.post(login_url, data=payload)
r = session.get(scrape_url)
print(r.text)
我没有收到任何错误,但是print(r.text)
仅提供了登录页面的html代码,而不提供scrape_url
。
答案 0 :(得分:1)
您需要模拟您访问网站时浏览器的工作。如果尝试在浏览器的开发工具(instructions for Chrome)中登录并打开网络监视器,则会看到https://www.ecoledirecte.com/login的页面仅包含表单,这不是您想要的URL开机自检。
相反,当您输入用户名时,浏览器会使用包含以下内容的表单向https://api.ecoledirecte.com/v3/login.awp发送POST请求
data={
"identifiant": "username",
"motdepasse": "pass"
}
因此,您应该将登录代码更改为:
import json
...
login_url = 'https://api.ecoledirecte.com/v3/login.awp'
login_data = {
'identifiant': 'username',
'motdepasse': 'password'
}
payload = {'data': json.dumps(login_data)}
with requests.Session() as session:
post = session.post(login_url, data=payload)