2014-11-04 203 views
2

我試圖登錄到這些網站: https://www.epexspot.com/en/extras/EPEXme/login使用Python的請求方法。我嘗試了下面的代碼,但由於我真的很新,所以我很難從網站上獲取相關的標題信息。Python登錄到https網站(epex spot)使用請求下載文件

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

看看頁面的登錄<form>,267至292

您需要的有效載荷數據提交到URL形式的action屬性,是對線的HTML源代碼:「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),所以希望別人會提供更多的細節。

+0

嗨,非常感謝你,嘗試過但沒有成功。你知道我必須在這裏放置什麼:「User-show_login_form [form] [login] [page1] [page_values] [page_sent]」 – Johannes 2014-11-04 09:31:46

+0

這就是269行上隱藏的輸入元素的名稱,它具有一個常量值的「1」。在更復雜的表單中,隱藏字段可能會被客戶端JavaScript修改,但我們不必擔心這一點。我沒有仔細查看該頁面的所有HTML源代碼,但希望我們只需要關注登錄表單本身的源代碼。但正如我在我的回答中提到的那樣,我對這類東西有點不習慣,可能有一些重要的東西我忘記了。 – 2014-11-04 09:41:51

+0

非常感謝,它現在可以工作!我把「1」並排除了一個打字錯誤。 – Johannes 2014-11-04 10:56:55