2012-03-15 15 views
0

標準化されたレイアウトを使用して編成されたウェブサイトから情報を読み取ることができれば、サイトのコントロール/テキストボックス/ボタンなどは常に同じ場所にあるが、データ/変更を保持しています。ウェブサイトの情報を表示する、アプリケーションを表示する

C#WinFormアプリケーションでは、バックグラウンドでそのページを開いて、いくつかの値を読み込み、自分のフォームで使用できますか? Webページ上の特定の領域や項目を参照する方法はありますか?たとえそれが正確に12回のタブ移動と同じように非効率的であったとしても?私は完全にここで夢を見ていますか?

もう一度ページ上の特定のものをクリックする必要はなく、特定のテキストボックスやその性質のものを読み込むだけです。

+0

テイクalook http://stackoverflow.com/questions/26857/how-do-you-programmatically-fill- in-a-form-and-a-web-page –

+1

「スクリーンスクレイピング」は、あなたが探している用語です。はい、その簡単で一般的なことです。 –

+0

ここに素敵な答えがたくさんありますが、何も受け入れられませんか? –

答えて

4

また、Webブラウザコントロールを使用してこれを行うこともできます。このスレッド内のポスターや評判の全てを取得するには、この操作を行うことができます:

この時
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

確かにこれを行うことができます。正確な実装は、Webページ、レイアウトなどに基づいて変更される可能性があります。

WebClientを使用して、Webページを文字列として取得し、Regexを使用して一致するHTML部分を読み取ります。 「ヒットタブx回」のようなものはうまくいかず、ブラウザコントロールを埋め込むかHTMLをパースする必要があるため、実装するのは難しく複雑です。

+0

+1。 RegExは、 "id = 'aaa'>スクラップ<"のような見た目の塊がある場合、ページから値を取り出すのに便利です。 「第3のネストされたdiv内の第2のスパン」を見つける必要がある場合、DPedenが提案するHtmlAgilityPackを使用する時間。 –

6

Html Agility Packは、この種のことを行うための一般的な選択です。

+0

それは存在していたことを知ったことはないawsome! –

関連する問題