2012-03-15 88 views
0

如果可以從使用標準化佈局組織的網站讀取信息,這意味着該網站的控件/文本框/按鈕等始終位於相同的位置,但數據/值正在變化。閱讀網站信息,顯示應用程序

在C#WinForm應用程序中,我可以在後臺打開該頁面,讀取一些值並將其用於表單中?有沒有方法可以引用網頁上的特定區域/項目,即使它的效率低於製表12次?我在這裏完全在做夢嗎?

再次,我不需要點擊頁面上的某些東西,只需要閱讀某個文本框中的內容或那種性質的東西。

+0

採取alook http://stackoverflow.com/questions/26857/how-do-you-programmatically-fill-網頁形式和網頁後 – 2012-03-15 01:12:12

+1

「屏幕抓取」是你正在尋找的術語..是的,它的容易和通用的做法。 – 2012-03-15 01:21:04

+0

很多很好的答案在這裏,沒有什麼可以接受的? – 2012-03-23 11:56:58

回答

4

您也可以使用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); 
     } 
    } 
} 
1

當然,你可以這樣做。確切的實現可能會根據網頁,佈局等進行更改。

作爲基本/簡單大綱:使用WebClient將網頁作爲字符串檢索,然後使用Regex來讀取匹配的HTML部分。像「hit tab x times」這樣的東西將無法正常工作,而且實施起來相當困難或複雜,因爲您必須自己嵌入瀏覽器控件或解析HTML。

+0

+1。請注意,當存在明顯的塊來查找它們時,正則表達式對於從頁面中選擇值很有用,例如「id ='aaa'> text to scrap <」。如果您需要找到「第三個嵌套div內的第二個跨度」 - 按照DPeden的建議使用HtmlAgilityPack。 – 2012-03-15 01:22:59

6

Html Agility Pack是做這種事情的熱門選擇。

+0

永遠不會知道這是存在的! – 2012-03-15 01:20:42

相關問題