2010-07-15 246 views
2

我有一個應用程序的想法,這將真正幫助我在工作中,但我不確定是否有可能。從網頁獲取數據

我想運行一個C#桌面應用程序,它會詢問一個值。當提供一個值時,應用程序將打開一個瀏覽器,轉到一個網頁,並將該值添加到在線網站上的表單中。然後提交表單並加載一個包含結果表的新頁面。然後我想從頁面源中提取結果表並編寫代碼來解析結果值。

用戶在實際瀏覽器中看到這種情況並不重要。換句話說,如果有辦法通過讀取HTTP請求來做到這一點,那很好。

我遇到的最大問題是將值放入表單中,然後在表單提交併加載下一頁後檢索頁面源。

任何幫助真的很感激。

謝謝

+0

您是否控制了網站,或者您是否從其他人的網站上抓取了數據? – 2010-07-15 14:45:23

+0

該網站是我們的一臺服務器上的數據的前端,儘管我們因某種原因不允許直接訪問。一切都必須通過網絡 – user392810 2010-07-15 15:55:46

回答

1

這絕對是可能的,你不需要使用真正的網絡瀏覽器。您可以簡單地使用System.Net.WebClient來發送您的HTTP請求並獲得HTTP響應。

我建議使用wireshark(或者你可以使用Firefox + Firebug),它允許你看到HTTP請求和響應。通過查看HTTP流量,您可以清楚地看到應該如何傳遞HTTP請求以及應該設置哪些參數。

+0

要查看請求和響應,我相信Firefox + Firebug組合更容易。 – Amadan 2010-07-15 14:48:04

+0

@Amadan:正確的感謝我添加了你的建議。 – 2010-07-15 14:50:21

0

你不需要使用這個瀏覽器。 WebClient應該做你需要的一切。您需要查看在使用瀏覽器提交表單時實際發佈的內容,然後您應該能夠使用WebClient發出POST請求並以字符串形式檢索結果頁面。

WebClient constructor的文檔有一個很好的例子。

1

假如你只在合法範圍內使用這樣的:

通常情況下,Web表單通過POST請求發送到Web服務器,特別是一些腳本處理它發送。您可以查看錶單頁面的HTML代碼並找出表單的目的地(表單的操作)。

然後,您可以在C#中使用HttpWebRequest「假裝自己是表單」,併發送一個包含所有必需參數(將它們添加到HTTP標頭)的POST請求。

因此,您將獲得目標頁面的源代碼,因爲它將被髮送到瀏覽器。你可以解析這個。

0

參見例如this question至少在數據檢索方面有一些指針。在完成此操作之前,您將瞭解更多有關http protocol的信息...

0

如果您甚至不希望用戶執行任何操作,您爲什麼要通過網頁執行此操作? 網頁純粹是爲了與用戶交互,如果你只是想要數據傳輸,使用WCF。

@Brian使用Wireshark會導致一個非常生氣的網絡管理員,確保你真的被允許使用它。