2015-10-16 167 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