如果可以從使用標準化佈局組織的網站讀取信息,這意味着該網站的控件/文本框/按鈕等始終位於相同的位置,但數據/值正在變化。閱讀網站信息,顯示應用程序
在C#WinForm應用程序中,我可以在後臺打開該頁面,讀取一些值並將其用於表單中?有沒有方法可以引用網頁上的特定區域/項目,即使它的效率低於製表12次?我在這裏完全在做夢嗎?
再次,我不需要點擊頁面上的某些東西,只需要閱讀某個文本框中的內容或那種性質的東西。
如果可以從使用標準化佈局組織的網站讀取信息,這意味着該網站的控件/文本框/按鈕等始終位於相同的位置,但數據/值正在變化。閱讀網站信息,顯示應用程序
在C#WinForm應用程序中,我可以在後臺打開該頁面,讀取一些值並將其用於表單中?有沒有方法可以引用網頁上的特定區域/項目,即使它的效率低於製表12次?我在這裏完全在做夢嗎?
再次,我不需要點擊頁面上的某些東西,只需要閱讀某個文本框中的內容或那種性質的東西。
您也可以使用webbrowser控件來執行此操作。爲了讓所有在此線程的海報和名聲,你可以這樣做:
在此private void Form1_Load(object sender, EventArgs e)
{
webBrowser1.Navigated += new WebBrowserNavigatedEventHandler(webBrowser1_Navigated);
webBrowser1.Navigate("http://stackoverflow.com/questions/9712699/read-website-information-display-application");
}
private void webBrowser1_Navigated(object sender, WebBrowserNavigatedEventArgs e)
{
foreach (HtmlElement ele in webBrowser1.Document.GetElementsByTagName("SPAN"))
{
if (ele.GetAttribute("title") == "reputation score")
{
MessageBox.Show(ele.Parent.Children[0].InnerText + " - "+ ele.InnerHtml);
}
}
}
當然,你可以這樣做。確切的實現可能會根據網頁,佈局等進行更改。
作爲基本/簡單大綱:使用WebClient
將網頁作爲字符串檢索,然後使用Regex
來讀取匹配的HTML部分。像「hit tab x times」這樣的東西將無法正常工作,而且實施起來相當困難或複雜,因爲您必須自己嵌入瀏覽器控件或解析HTML。
+1。請注意,當存在明顯的塊來查找它們時,正則表達式對於從頁面中選擇值很有用,例如「id ='aaa'> text to scrap <」。如果您需要找到「第三個嵌套div內的第二個跨度」 - 按照DPeden的建議使用HtmlAgilityPack。 – 2012-03-15 01:22:59
採取alook http://stackoverflow.com/questions/26857/how-do-you-programmatically-fill-網頁形式和網頁後 – 2012-03-15 01:12:12
「屏幕抓取」是你正在尋找的術語..是的,它的容易和通用的做法。 – 2012-03-15 01:21:04
很多很好的答案在這裏,沒有什麼可以接受的? – 2012-03-23 11:56:58