2016-11-13 119 views
0

這個問題已經解決了各種形狀和口味,但我還沒有能夠應用我在線閱讀的任何解決方案。使用Python登錄到網站

我想用Python來登錄網站:https://app.ninchanese.com/login ,然後訪問該頁面:https://app.ninchanese.com/leaderboard/global/1

我曾嘗試過各種東西,但沒有成功...... 使用POST方法:

import urllib 
import requests 
oURL = 'https://app.ninchanese.com/login' 
oCredentials = dict(email='[email protected]', password='mypassword') 
oSession = requests.session() 
oResponse = oSession.post(oURL, data=oCredentials) 
oResponse2 = oSession.get('https://app.ninchanese.com/leaderboard/global/1') 

從請求包中的認證功能

import requests 
oSession = requests.session() 
oResponse = oSession.get('https://app.ninchanese.com/login', auth=('[email protected]', 'mypassword')) 
oResponse2 = oSession.get('https://app.ninchanese.com/leaderboard/global/1') 

每當我打印oResponse2,我可以看到我總是在登錄頁面上,所以我猜測認證不起作用。

請問您能告訴我如何做到這一點?

回答

1

你要送csrf_token與您的登錄請求一起:

import urllib 
import requests 
import bs4 

URL = 'https://app.ninchanese.com/login' 
credentials = dict(email='[email protected]', password='mypassword') 
session = requests.session() 
response = session.get(URL) 
html = bs4.BeautifulSoup(response.text) 
credentials['csrf_token'] = html.find('input', {'name':'csrf_token'})['value'] 
response = session.post(URL, data=credentials) 
response2 = session.get('https://app.ninchanese.com/leaderboard/global/1') 
+0

您好丹尼爾,並非常感謝撥冗anwser的時候了! 我已經試過上述你,但是當我打印(response2.text)我有以下錯誤信息: 回溯(最近通話最後一個): 文件「」,1號線,在 文件「C:\ Users \ alexis.rolland \ AppData \ Local \ Programs \ Python \ Python35-32 \ lib \ encodings \ cp437.py「,第19行,編碼爲 返回codecs.charmap_encode(input,self.errors,encoding_map)[0] UnicodeEncodeError:'charmap'編解碼器無法對位置5722-5724中的字符進行編碼:字符映射到

+0

好了!你的解決方案實際上工作,我可以通過添加.encode(「UTF-8」)...這給了我這個打印:(response2.text.encode(「utf-8」)) –