使用python请求库登录网站

seb*_*ebo 4 python http-request python-requests

我已经浏览了很多关于如何使用请求库创建会话的SO线程,但我尝试的方法都没有实际登录.我对网页设计和协议的经验很少,所以请指出我可能的任何基础知识需要了解.这是我正在做的事情:

import requests

EMAIL = 'my_email'
PASSWORD = 'my_pw'
URL = 'https://account.guildwars2.com/login'

session = requests.session()

login_data = dict(username=EMAIL, password=PASSWORD)
r = session.post(URL, data=login_data)

req = session.get('https://leaderboards.guildwars2.com/en/na/achievements/guild/Darkhaven%20Elite')

print req.content
Run Code Online (Sandbox Code Playgroud)

我看到的内容是如果我没有登录就会看到的内容.

我的语法是否有任何不正确的地方,或者是我设置的登录页面的设置方式导致的问题?

小智 8

@DanAlbert指出我告诉你要使用HTTP Auth,这不是你想要做的.我假设,因为一切看起来都正确,它可能只是您需要的HTTP Auth.

但是,查看它看起来的形式可能你只是在你的dict中使用了错误的变量名:

import requests
s = requests.session()
login_data = dict(email='email', password='password')
s.post('https://account.guildwars2.com/login', data=login_data)
r = s.get('https://leaderboards.guildwars2.com/en/na/achievements/guild/Darkhaven%20Elite')
print r.content
Run Code Online (Sandbox Code Playgroud)

如果您查看表单,它会期望变量"email"和"password".你有"用户名"和"密码"

无论如何,HTH

  • 这将执行HTTP基本身份验证,这是通过向HTTP请求添加标头来执行的.据我所知,他正在寻找一种方式来登录网站,如果他填写登录表格(这将是一个POST). (3认同)