2016-07-30 36 views
1

亂舞刮刮這看起來很簡單,但由於某些原因,這並沒有正確連接到亂碼,我無法刮取數據。使用python3 requests.Session()

loginurl = "https://dev.flurry.com/secure/loginPage.do" 
    csvurl = "https://dev.flurry.com/eventdata" 

    session = requests.Session() 
    login = session.post(loginurl, data={'loginEmail': 'user', 'loginPassword': 'pass'}) 
    data = session.get(csvurl) 

每次我嘗試使用這個,我都會重定向到登錄屏幕(loginurl)而不會提取新數據。有沒有人能夠像這樣成功地連接起來呢?

任何和所有的幫助將不勝感激,謝謝。

回答

1

有兩個表單字段中填充struts.token.namestruts.token.name令牌的價值,你還必須張貼到loginAction.do

enter image description here

你可以做一個初步的GET和分析使用BS4然後發佈該數據的值:

from bs4 import BeautifulSoup 
import requests 

loginurl = "https://dev.flurry.com/secure/loginAction.do" 
csvurl = "https://dev.flurry.com/eventdata"# 
data = {'loginEmail': 'user', 'loginPassword': 'pass'} 

with requests.Session() as session: 
    session.headers.update({ 
     "User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36"}) 

    soup = BeautifulSoup(session.get(loginurl).content) 
    name = soup.select_one("input[name=struts.token.name]")["value"] 
    data["struts.token.name"] = name 
    data[name] = soup.select_one("input[name={}]".format(name))["value"] 
    login = session.post(loginurl, data=data) 
+0

感謝您的回覆 - 數據{}似乎正確填充{'token':'4M9BFNE1NVFK89CZTP8CQO3MKUHWLQYZ','struts.token.name':'token','loginPassword':'mypass','loginEmail' :'myemail'} ...但我仍然重定向回登錄頁面 – Nefariis

+0

@Nefariis,你也有錯誤的帖子網址!查看更新,現在'print(login.history')應該向你顯示'[302,302]',你將會登錄 –

+0

你對帖子URL完全正確,一切都像冠軍一樣工作 - 謝謝。 – Nefariis