2009-07-08 49 views
1

我想從網站上自動提取數據,我真的不知道從哪裏開始。我們的供應商之一是通過「在線應用程序」的「Business Objects 11」讓我們訪問某些設備的日誌記錄數據。如果您對這個在線應用程序不熟悉,請將其視爲基於Web的報告生成器。問題是我試圖監視很多設備,並且此供應商只創建了一次提取一個日誌的請求。這個請求需要設備號,開始日期和結束日期......更糟糕的是,我們只能導出爲二進制Excel格式,因爲de「csv」導出已損壞,並且他們拒絕修復它......因此,我們受Excel的65 536行限制限制......(在我的情況下,這相當於3到4天的數據記錄)。由於只有供應商具有必要的管理權限,我無法創建新的請求。自動瀏覽器導航和數據提取

您認爲通過Web GUI運行大量請求(大約800)最優雅的方式是什麼?我想我可以硬編碼鼠標位置,點擊事件和按鍵拖延和一切......但必須有更好的方法。

我閱讀了有關AutoHotKey和AutoIt腳本,但他們似乎對他們在網上可以做什麼有限。另外...我堅持使用IE6 ......但是如果你知道一種涉及其他瀏覽器的方式,我對你的回答仍然很感興趣。

(一旦我有本地的日誌文件,提取數據是問題)

回答

1

有些事情你可能會嘗試。如果該網站是一個html,並且可以通過簡單的POST或GET請求報告,那麼urlib/urlib2和cookielib Python模塊應該足以獲取一個excel文檔。

然後你可以試試這個:xlrd從excel中提取數據。

另外,請看:http://pamie.sourceforge.net /。我從來沒有嘗試過,但看起來很有前途且易於使用。

0

通常情況下,我建議不要在所有使用IE瀏覽器(或任何瀏覽器)。請記住,Web瀏覽器軟件只是用於製作http請求並以有意義的方式顯示結果的代理程序。還有其他方法可以製作類似的http請求並處理響應。幾乎每種現代語言都將其內置到API中。這稱爲屏幕抓取或網頁抓取。

但是爲了完成這個建議,我需要了解更多關於你的編程環境的知識:例如,你設想編寫這個腳本的編程語言是什麼?使用C#,你剛纔得到的HTML結果作爲字符串應該是這樣的

一個典型的例子:

new System.Net.WebClient().DownloadString("http://example.com"); 

然後,您解析字符串找到你需要的任何字段和發送另一個請求。 WebClient類也有一個.DownloadFile()方法,您可能會發現它對於檢索excel文件很有用。

+0

語言本身不是問題。我更像是一名C/C++開發人員,但我在VB/VBS,C#,Java,Bash腳本等方面做了很多工作。我曾與PHP合作過一段時間,但涉及到「Web語言」時就是這樣。 你說得對有關HTTP請求,但在我的印象解析來自這樣一個web應用程序的原始反應會很複雜......或許不是... – 2009-07-08 16:05:34

+0

@Decapsuleur:用正則表達式解析HTML響應看起來蹩腳,但令人驚訝的作品以及自動生成的頁面。 – 2009-07-08 16:18:26

0

既然你可以使用.NET,你應該考慮使用Windows窗體WebBrowser控件。您可以自動導航到網站,按按鈕等。加載報告頁面後,您可以使用代碼導航HTML DOM來查找所需的數據 - 不涉及任何正則表達式。

我做了類似這年前的事情,從eBay中提取拍賣數據。