2016-07-30 32 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