2011-06-09 2 views
0

Я пытаюсь загрузить содержимое HTML с любого URL-адреса через элемент управления веб-браузером в C# .net. Я выбираю веб-браузер для обработки проблем Javascript. Я использую управление веб-браузером, не размещая на форме. Он отлично работает для одного URL-адреса, но когда я его называю несколькими URL-адресами, я не могу загрузить .несколько страниц с контролем веб-браузера C#

Вот код

GetWebpage() 
{ 
    System.Windows.Forms.WebBrowser wb = new System.Windows.Forms.WebBrowser(); 


       wb.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(wb_DocumentCompleted); 

       wb.Navigate(sURI, false); 


       bDocumentLoaded = false; 

       while (!bDocumentLoaded) 
       { 
        Application.DoEvents(); 
        Thread.Sleep(100); 
       } 
       sHTML = wb.DocumentText; 

       bDocumentLoaded = false; 

    } 

Событие:

private void wb_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) 
     { 


      System.Windows.Forms.WebBrowser webBrowser1;   
      webBrowser1 = sender as WebBrowser; 

      string strTit = webBrowser1.DocumentTitle; 
      string str = webBrowser1.DocumentText; 

      bDocumentLoaded = true; 

     } 

Cheers, Karthik

+0

ли вопрос о том, что зависании приложения while (! bDocumentLoaded)? Я столкнулся с той же проблемой, и мне интересно, что делают другие, чтобы заставить управление WebBrowser работать синхронно. –

ответ

0

Вы можете использовать объект WebClient для извлечения данных из некоторого URL.

Попробуйте использовать Качают Строка

public static void DownloadString (string address) 
    { 
     WebClient client = new WebClient(); 
     string reply = client.DownloadString (address); 

     Console.WriteLine (reply); 
    } 

Вы также можете использовать метод ASYC из одной строки загрузки.

Я думаю, ваша проблема в том, что некоторые сайты обнаружения конкретной BrowserType, а затем они возвращаются HTML

Попробуйте поставить HeaderProperty из WebClient Object этого список HttpWebRequest объекта

Для примера

myWebClient .Headers.Add ("Content-Type", "применение/х-WWW-форм-urlencoded");

Измените useragent HTTPWEBRequest, затем добавьте в заголовки. HTTPWEBRequest.UserAgent = ". NET Test Test Client";

Вы можете проверить более подробную информацию об этом в MSDN Link

+0

У меня есть jus try webclient Object, он отлично работает, но некоторые страницы блокируются проблемами Javascript. – karthik

Смежные вопросы