【问题标题】:C# HtmlAgilityPack timeout before download page下载页面之前的 C# HtmlAgilityPack 超时
【发布时间】:2023-03-23 13:40:01
【问题描述】:

我想用 htmlagilitypack 在 C# 上解析站点 https://russiarunning.com/events?d=run 我正在尝试这个制作

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

但我遇到了一个问题 - 网站加载内容时超时 ~1000 毫秒 因此,当使用 web.Load (url) 时,我下载的页面没有内容。

如何在使用 htmlagilitypack 下载页面之前超时?

【问题讨论】:

标签: c# html-agility-pack


【解决方案1】:

试试这个...

如下创建一个类:

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);

【讨论】:

    【解决方案2】:

    你可以这样做:

    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);
    

    有关超时属性的更多信息:https://docs.microsoft.com/en-us/dotnet/api/system.net.httpwebrequest.timeout?view=netframework-4.7.2

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-07
      • 1970-01-01
      • 1970-01-01
      • 2023-04-09
      相关资源
      最近更新 更多