HTMLAgilityPack и время ожидания при загрузке - PullRequest
3 голосов
/ 04 мая 2011

Я использую HTMLAgilityPack в парсере, который у меня установлен на сервере, но у меня возникают проблемы с одним из анализируемых веб-сайтов: каждый день около 6 утра они, как правило, закрывают свои серверы для обслуживания,который отбрасывает метод Load () для HTMLWeb и вызывает сбой моего приложения.Кто-нибудь из вас, ребята, имеет более безопасный способ загрузки веб-сайта в HTMLAgilityPack, или, может быть, какой-нибудь способ проверки ошибок в C #, чтобы предотвратить сбой моего приложения?(мой C # немного ржавый).Вот мой код прямо сейчас:

HtmlWeb webGet = new HtmlWeb();
HtmlDocument document = webGet.Load(dealsiteLink); //The Load() method here stalls the program because it takes 1 or 2 minutes before it realizes the website is down

Спасибо!

Ответы [ 2 ]

3 голосов
/ 04 мая 2011

Просто окружите вызов try-catch:

HtmlWeb webGet = new HtmlWeb();

HtmlDocument document;
try
{
    document = webGet.Load(dealsiteLink); 
}
catch (WebException ex)
{
    // Logic to retry (maybe in 10 minutes) goes here
}

Точная логика повторения будет зависеть от структуры вашего приложения - вы, вероятно, обнаружите, что блок try-catch нужно разместить вышев вашем приложении должно быть намного выше, чем это.

Я думаю, WebException - это исключение, которое вы должны поймать, но я не уверен, потому что не могу найти документацию.Вы можете обнаружить, что вам также нужно поймать TimeoutException.

2 голосов
/ 04 мая 2011

Попробуйте выполнить WebRequest.GetReponse на домашней странице веб-сайтов и отловить WebException, если вы получаете WebException, может быть, потребуется некоторое время и повторите попытку, пока не получите ответ, после получения ответа перейдите к методу загрузки HtmlAgilityPack.

Проверьте это

http://msdn.microsoft.com/en-us/library/system.net.webrequest.getresponse.aspx#Y700

...