2012-10-08 104 views
0

我需要編寫一個函數,用於下載和存儲當前的預發佈域名.txt文件的列表 http://www.namejet.com/pages/downloads.aspx. 因此,今天是10月8日,您希望獲取文件「2012年10月8日星期一」。 嘗試請求,但沒有奏效。 我遇到了麻煩,因爲該文件沒有存儲在固定的URL上,但隱藏在一些Javascript後面。如何使用Python從網站下載文本文件?

回答

2

這一個有點棘手,因爲你正在處理ASP.NET的postback系統。如果這不適用於個人腳本以外的任何內容,我會保持警惕,因爲您實際上不僅使用其他站點的數據,而且還對其軟件進行逆向工程(但是,IANAL並不知道網絡中涉及這些問題的合法性問題)系統)。

您要做的是檢查POST數據(使用Firebug,Chrome開發人員工具等)並查找表單對象的__EVENTTARGET__VIEWSTATE屬性。您必須將__VIEWSTATE解碼爲可讀(請參閱http://ignatu.co.uk/ViewStateDecoder.aspx)。從那裏,我認爲你應該能夠找出如何獲得你正在尋找的數據。

從Python的,它是那麼容易,因爲:

from urllib2 import urlopen 
from urllib import urlencode 

data = urlopen('url', urlencode({ 
    '__VIEWSTATE': 'foo', 
    '__EVENTTARGET': 'bar', 
})).read() 
+0

你好Demian。我知道後續跟進有點晚。我使用了Chrome開發人員工具,發現了您提到的兩個屬性!現在我可以在哪裏繼續?如何從該網站獲取預發佈域名列表? –

1

實際上,您將獲得文本文件以響應具有多個base64編碼請求參數的POST請求。隨時用它

使用螢火蟲或其他任何調試工具來玩玩看帖子內容和參數

+0

你有它的一些教程? –

+0

@DemianBrecht回答比我好很多,希望它有助於:) – Marat