2012-06-06 3 views
0

Я использую htmlagilitypack для очистки некоторой части веб-страницы. Я получаю фактический результат, но не всегда.Внешняя веб-страница не загружается каждый раз в htmlagility pack

HtmlAgilityPack.HtmlWeb web = new HtmlWeb(); 
web.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4"; 
HtmlAgilityPack.HtmlDocument doc = web.Load(url); 
var resultPriceTable = doc.DocumentNode.SelectNodes("//div[@class='resultsset']//table"); 

resultPriceTable приходит утратившим в некоторых случаях (около 50%). Из отладки я обнаружил, что

HtmlAgilityPack.HtmlDocument doc = web.Load(url); 

вызывает вопрос. Иногда он не загружает URL. Как исправить эту проблему?

Заранее спасибо.

ответ

0

Попробуйте загрузить страницу через WebClient или HttpWebRequest/HttpWebResponse, а затем отправить результат HtmlAgilityPack

этот пример кода попытайтесь загрузить страницу до 5 раз если вы получите пустую строку или получить WebException

в производстве код не просто пропустить исключения, вам необходимо тщательно обработать его (или, по крайней мере, зарегистрировать ее)

Пример:

string html = string.Empty; 
      int tries = 5; 
      while (tries > 0) 
      { 
       using (var client = new WebClient()) 
       { 

        string url = "http://google.com/"; 
        client.Headers.Add(HttpRequestHeader.UserAgent, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4"); 
        try 
        { 
         html = client.DownloadString(url); 
         tries--; 
         if (!string.IsNullOrEmpty(html)) 
         { 
          break; 
         } 
        } 
        catch (WebException) 
        { 
         tries--; 
        } 
       } 
      } 
      HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument(); 
      doc.LoadHtml(html); 
+0

Спасибо Alexander.If использую это, я получаю html = "" большую часть времени. –

+0

выглядит как проблема с сервером на главной странице, попробуйте увеличить количество попыток –

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