2014-09-10 71 views
0

我想從網頁上下載文件,但我必須先登錄。我正在使用Python Requests模塊,並且我認爲我做得很對,因爲當我打印GET響應的HTML時,它就在那裏。然而,沒有任何風格存在,並且當我在網頁中打開它時,沒有任何鏈接可用。 我的密碼是'username''password'是我的實際用戶名和密碼的字符串。爲什麼在使用Python Requests模塊後我失去了網頁的功能?

import requests 

f = open('a.html', 'w') 
loginurl = 'https://www.example.com/login' 
username = 'username' 
password = 'password' 
url = 'https://www.example.com/secured_page_containing_file' 

payload = { 
    'UserName' : username, 
    'Password' : password 
} 

with requests.Session() as s: 
    s.post(loginurl, data=payload) 

    r = s.get(url) 
    f.write(r.text) 

同樣,這部作品在提取'https://www.example.com/secured_page_containing_file'的HTML我的條件,但功能是不存在的。任何幫助是極大的讚賞。謝謝!

回答

1

如果您使用瀏覽器查看文件,現在您正在使用文件的不同的位置。任何相對URL都將被解析爲相對於該新位置,並且這些URL都不會起作用。您必須將這些網址重寫爲絕對網址才能使用。

這是一個事實撇開該web服務器可以基於任何數量的因素,包括你發送的內容標題請求頁面時,頁面可以改變行爲時,與頁面相關聯的JavaScript代碼是改變他們的反應由您的瀏覽器執行。

這一切與requests或Python無關,真的。

+0

啊,說得通。因此,我將不得不使用美麗的湯,並改變所有這些,或者有更好的方法來解決這個問題嗎? – sbru 2014-09-10 18:47:49

+0

其實,在這裏回答我自己的問題,但如果我沒有將它保存到文件並直接從GET請求處理它,那麼我應該沒事吧? – sbru 2014-09-10 18:50:23

+0

@bagelboy:BeautifulSoup會是一個很好的方法來做到這一點。考慮到你可能會遇到[同源策略](http://en.wikipedia.org/wiki/Same-origin_policy)問題。 – 2014-09-10 18:51:12

相關問題