2015-10-16 200 views
0

我是Python新手,我试图使用请求模块登录到网站并打印出我的一些帐户信息。见下面的代码:使用Python请求登录网站

import requests 

username = 'myusername' 
password = 'mypassword' 
URL = 'https://www.mmoga.com/login.php' 
payload = {'email_address': username, 'password': password} 

session = requests.session() 
r = requests.post(URL, data=payload) 
account = session.get('https://www.mmoga.com/shopping_cart.php') 
print account.content 

我也必须添加标题到requests.post

当我看到我看到

<div class="boxHeading"> 
    <a href="mmoga.com/login.php"; title="- My Account -">- My Account -</a> 
</div> 

HTML源代码,但是我应该看到

<div class="boxHeading"> 
    <a href="mmoga.com/account.php"; title="- My Account -">- My Account -</a> 
</div> 
+0

您能否告诉我们您会得到什么回复,以及它与您的期望有什么不同? –

+0

你读过这个... http://docs.python-requests.org/en/v2.0-0/user/authentication/ – jcfollower

+0

@EricWilson当我看到html源码时,我看到

但是我应该看到 Martin

回答

1

在发布该页面还需要通过查询字符串的登录表单名为action的“get”参数:

import requests 

username = 'myusername' 
password = 'mypassword' 
URL = 'https://www.mmoga.com/login.php' 
payload = {'email_address': username, 'password': password} 
params = {'action': 'process'} 

session = requests.session() 
r = session.post(URL, data=payload, params=params) 
account = session.get('https://www.mmoga.com/shopping_cart.php') 
print account.content 

这应该可以解决登录问题。此外,该会话在登录期间未被使用,因此您应该使用session.post(),如上所示。

+0

谢谢!那解决了它 – Martin