Тайм-аут C # HtmlAgilityPack перед страницей загрузки - PullRequest
0 голосов
/ 10 января 2019

Я хочу разобрать сайт https://russiarunning.com/events?d=run на C # с htmlagilitypack Я попробую это сделать

string url = "https://russiarunning.com/events?d=run";
var web = new HtmlWeb();
var doc = web.Load(url);

Но у меня проблема - контент при загрузке сайта с таймаутом ~ 1000 мс поэтому при использовании web.Load (url) я загружаю страницу без контента.

Как сделать тайм-аут перед загрузкой страницы с помощью htmlagilitypack?

Ответы [ 2 ]

0 голосов
/ 10 января 2019

Вы можете просто сделать это:

string url = "https://russiarunning.com/events?d=run";
var web = new HtmlWeb();
web.PreRequest = delegate(HttpWebRequest webReq)
{
 webReq.Timeout = 4000; // number of milliseconds
 return true;
};

var doc = web.Load(url);

Подробнее о параметре Timeout: https://docs.microsoft.com/en-us/dotnet/api/system.net.httpwebrequest.timeout?view=netframework-4.7.2

0 голосов
/ 10 января 2019

Попробуйте это ...

Создайте один класс, как показано ниже:

public class WebClientHelper : WebClient
{
    protected override WebRequest GetWebRequest(Uri address)
    {
        HttpWebRequest request = base.GetWebRequest(address) as HttpWebRequest;
        request.AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip;
        return request;
    }
}

и используйте, как показано ниже:

  var data = new Helpers.WebClientHelper().DownloadString(Url);
  var htmlDocument = new HtmlDocument();
  htmlDocument.LoadHtml(data);
...