2010-03-28 5 views
0

그래픽으로 표시 할 필요없이 C#을 사용하여 웹 페이지에서 작업 할 수있는 라이브러리를 찾고 있습니다. 라이브러리는 JavaScript/AJAX를 사용하는 웹 사이트를 처리해야하며 Firefox/Chrome 내에서 소스를보고있는 것처럼 올바른 HTML을 반환해야합니다.C#에서 웹 페이지 작업을위한 라이브러리

+0

웹 스크래핑 기술을 찾고 있습니까? –

+0

스크래퍼가 AJAX/JavaScript 콘텐츠를 처리하는 방법을 알 수 있습니다. –

+0

@Gary : 예. @ 마이크 : 음, AJAX를 사용하여 검색 결과를로드하고 그 결과를 긁어 낼 수있는 웹 페이지를 처리 ​​할 수있는 무언가가 필요합니다. – xian

답변

1

알아 냈습니다. 라이브러리가 전혀 필요 없으며 WebBrowser 컨트롤을 사용하여 라이브러리를 만들 수 있습니다.

using System; 
using System.Windows.Forms; 

namespace WebBrowserDemo 
{ 
    class Program 
    { 
     public const string TestUrl = "http://www.w3schools.com/Ajax/tryit_view.asp?filename=tryajax_first"; 

     [STAThread] 
     static void Main(string[] args) 
     { 
      WebBrowser wb = new WebBrowser(); 
      wb.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(wb_DocumentCompleted); 
      wb.Navigate(TestUrl); 

      while (wb.ReadyState != WebBrowserReadyState.Complete) 
      { 
       Application.DoEvents(); 
      } 

      Console.WriteLine("\nPress any key to continue..."); 
      Console.ReadKey(true); 
     } 

     static void wb_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) 
     { 
      WebBrowser wb = (WebBrowser)sender; 

      HtmlElement document = wb.Document.GetElementsByTagName("html")[0]; 
      HtmlElement button = wb.Document.GetElementsByTagName("button")[0]; 

      Console.WriteLine(document.OuterHtml + "\n"); 

      button.InvokeMember("Click"); 

      Console.WriteLine(document.OuterHtml);   
     } 
    } 
} 
+1

'앱'이 커지면 양식을 정리할 때 이벤트 처리기를 참조 해제 할 수 있습니다. –

+0

@kitchen : 일단 초기로드가 완료되면 DocumentCompleted가 호출 될 것이며, 이후 AJAX 호출이 완료된 후에는 호출되지 않을 것이라고 확신합니다. 이걸 가지고 성공 했니? –

+0

@Michael : 예, AJAX 호출이 완료되면 작동합니다. @ George : 이것은 단지 데모이며, 실제 앱은 더 깨끗합니다/더 적절합니다 :) – xian

관련 문제