我的一位客戶需要定期從Web服務中提取客戶數據。數據本身通過javascript回傳以CSV文件的形式提供,就像服務網站中的大部分導航一樣。是否可以自動從客戶端回發?
現在,整個系統最糟糕的瓶頸就是人們需要登錄到網頁,導航到下載頁面,並手動將下載的文件添加到系統的其餘部分。
通過回發下載文件的過程是否可以自動進行? (例如,通過可以通過cron運行的shell腳本來說吧?)
如果是這樣,那麼您會推薦什麼作爲最合適的工具?
我的一位客戶需要定期從Web服務中提取客戶數據。數據本身通過javascript回傳以CSV文件的形式提供,就像服務網站中的大部分導航一樣。是否可以自動從客戶端回發?
現在,整個系統最糟糕的瓶頸就是人們需要登錄到網頁,導航到下載頁面,並手動將下載的文件添加到系統的其餘部分。
通過回發下載文件的過程是否可以自動進行? (例如,通過可以通過cron運行的shell腳本來說吧?)
如果是這樣,那麼您會推薦什麼作爲最合適的工具?
如果有人遇到這個問題再次,我已經找到了解決辦法:
的技巧是使用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
我希望這是任何人誰也許都會碰到這個問題以後有幫助。
您可以使用AJAX計時器。檢查asp.net/ajax網站。
我知道ASP.net不支持缺省的useragent(即Mechanize)。將useragent更改爲「Windows IE 8」或「Windows IE 9」適用於我,表單將爲__EVENTTARGET和__EVENTARGUMENT顯示2個隱藏字段 – 2014-06-01 14:24:39