Python使用请求下载文件登录https网站(epex spot)

时间:2014-11-04 07:36:52

标签: python python-requests autologin

我试图登录这些网站: https://www.epexspot.com/en/extras/EPEXme/login使用Python的requests方法。我尝试了以下代码,但由于我对此很陌生,因此很难从网站上获取相关的标题信息。

from requests import session

payload = {
'text': 'username',
'password': 'password',
'logon': 'username',
'submit': 'Login'
}

headers = {
'Referer': 'https://www.epexspot.com/en/extras/EPEXme/login/login/
 aHR0cHM6Ly93d3cuZXBleHNwb3QuY29tL2VuL21hcmtldC1kYXRhL2hpc3RvcmljYWwtZGF0YS9
 yZXRyaWV2ZS9hdWN0aW9uX19nZXJtYW55X2F1c3RyaWEvYXVjdGlvbl9zcG90X3
 ByaWNlc19nZXJtYW55X2F1c3RyaWFfMjAxNC5jc3Y%3D'
'User-Agent': 'Mozilla/5.0 (Windows NT 5.1; rv:33.0) Gecko/20100101 Firefox/33.0'
}

with session() as c:
c.post('link', data=payload, verify=False, headers=headers)
request = c.get('https://www.epexspot.com/en/market-data/historical-data/retrieve
_auction_germany_austria/auction_spot_prices_germany_austria_2014.csv, verify=False)
request.content

但是,request.content向我提供了登录网站的信息,而不是我想要的内容。 如上所述,我对这个登录stuf真的很新。我在这里阅读了很多,但我想我的主要问题是如何理解和识别我需要从网站中提取的组件(标题,有效负载)。 我知道可能还有其他工具可以完成相同的工作,但我的主要目标是了解这些基础知识。

谢谢!!!

1 个答案:

答案 0 :(得分:1)

查看页面登录<form>的HTML源代码,该代码位于第267至292行。

您需要将有效内容数据提交到表单action属性中的网址:“https://www.epexspot.com/en/extras/EPEXme/login/User/show_login_form”。

有效负载数据将包含各种<form>数据元素的名称和值(通常为<input>元素,但有时也包括其他内容,如<textarea>),包括任何隐藏元素。此页面的相关元素名称为:

“用户show_login_form [表格] [登录] [第1页] [page_values] [page_sent]”

“用户show_login_form [表格] [登录] [第1页] [登录] []”

“用户show_login_form [表格] [登录] [第1页] [口令] []”

免责声明:我从未使用请求做过这种事情(上次我几年前使用urllib2做过),所以希望其他人能提供更多细节。