2010-11-09 72 views
0

我有一個客戶端使用第三方網頁軟件。在1屏幕上,我的客戶填寫了一張表格。在提交之前,他想運行一些能夠捕獲他輸入的內容並將其插入到csv或數據庫中。 CSV或數據庫部分很簡單。從已經啓動的瀏覽器中獲取數據,在另一臺Web服務器上運行是我不知道該怎麼做的部分。如何從瀏覽器中屏幕刮取表格結果

如何捕獲html表單的內容?我寧願使用c#,vb.net,vbs或類似的東西,但真的很感興趣。我也不想在客戶端工作站上安裝自定義軟件,除了我在這裏寫的屏幕抓取軟件。我還希望用戶填寫表單,並運行腳本來收集數據,而不必運行自定義瀏覽器實例。

謝謝!

+0

您正在消除所有明顯的解決方案。接下來是Greasemonkey。 – 2010-11-09 19:56:35

回答

0

我決定使用javascript,並添加一個IE最愛或一個實現這一點的Firefox書籤。它從表單中檢索數據,並將數據從查詢字符串發送到aspx頁面。然後,aspx頁面將數據寫入數據庫,並在寫入成功或不成功時顯示彈出式圖形。

這裏的腳本樣本:您的建議

javascript:var oForm = document.forms[0];var name = oForm.elements["name"].value; void window.open("http://www.mydomain.com/page.aspx?data=" + name ,"_blank","resizable,height=130,width=130"); 

大家,謝謝!

1

在用戶提交表單之前,數據只存在於瀏覽器中。瀏覽器是唯一可以從中獲取數據的地方。

您需要類似於瀏覽器助手對象或FireFox中的等效項。您還必須限制可以使用哪些瀏覽器,並且您必須維護此輔助工具。你可以更好地告訴客戶「不」,或者找到更好的方式去做他真正想要的東西(比如,第三方應用程序可能需要能夠保存發送給它的內容)。

1

如果您或您的客戶不介意使用Windows窗體應用程序,可以添加WebBrowser控件,然後將其指向第三方Web應用程序。然後,您可以嘗試通過控件的.Document屬性訪問網頁的元素(即表單域)。雖然我不確定您是否可以訪問特定的表單字段值。

編輯
我能夠做到這一點與我說的。我創建了一個Windows窗體應用程序,添加一個WebBrowser控件(webBrowser1),然後加載這個網站進去(用適當的< HTML>,< head>標籤等):

<form id="form1" method="post" action="test.htm"> 
    <input type="text" id="testText" name="testText" /> 
    <br /> 
    <input type="submit" value="Save" /> 
</form>

注:我通過這樣做將其保存在html文件中,並在我的事件中使用webBrowser1.Url = new Uri(@"c:\test.htm");

當時我能夠做這個訪問無論我鍵入testText

HtmlDocument doc = webBrowser1.Document; //Gets the html document 
HtmlElement elem = doc.Body.All["testText"]; //Gets the input element 
MessageBox.Show(elem.GetAttribute("value")); //Gets the value attribute

我希望這可以幫助你。