2009-06-19 84 views
1

我的一位客戶需要定期從Web服務中提取客戶數據。數據本身通過javascript回傳以CSV文件的形式提供,就像服務網站中的大部分導航一樣。是否可以自動從客戶端回發?

現在,整個系統最糟糕的瓶頸就是人們需要登錄到網頁,導航到下載頁面,並手動將下載的文件添加到系統的其餘部分。

通過回發下載文件的過程是否可以自動進行? (例如,通過可以通過cron運行的shell腳本來說吧?)

如果是這樣,那麼您會推薦什麼作爲最合適的工具?

回答

4

如果有人遇到這個問題再次,我已經找到了解決辦法:

的技巧是使用Mechanize,以及一系列調用來Browser.submit()上相應的頁面。

其他人也可能遇到的一個問題是,ASP.NET頁面(根據我的經驗,回發導航的最大來源)也需要一個名爲__EVENTTARGET的隱藏參數,當您使用機械化。

這些頁面上的__doPostBack('foo')函數通過每個鏈接上的javascript onclick事件給出相關值__EVENTTARGET,但由於mechanize沒有使用JavaScript,因此您需要自己設置這些值。

我做了一個小巧的實用功能,以我的劇本,這是否中使用:

def add_event_target(form, target): 
    #Creates a new __EVENTTARGET control and adds the value specified 
    #.NET doesn't generate this in mechanize for some reason -- suspect maybe is 
    #normally generated by javascript or some useragent thing? 
    form.new_control('hidden','__EVENTTARGET',attrs = dict(name='__EVENTTARGET')) 
    form.set_all_readonly(False) 
    form["__EVENTTARGET"] = target 

我希望這是任何人誰也許都會碰到這個問題以後有幫助。

+0

我知道ASP.net不支持缺省的useragent(即Mechanize)。將useragent更改爲「Windows IE 8」或「Windows IE 9」適用於我,表單將爲__EVENTTARGET和__EVENTARGUMENT顯示2個隱藏字段 – 2014-06-01 14:24:39

-1

您可以使用AJAX計時器。檢查asp.net/ajax網站。

相關問題