C# 外部网页并非每次都在htmlagility pack中加载

C# 外部网页并非每次都在htmlagility pack中加载,c#,html-agility-pack,C#,Html Agility Pack,我正在使用htmlagilitypack来刮取网页的某些部分。我得到了实际输出,但并不总是如此 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(ur

我正在使用htmlagilitypack来刮取网页的某些部分。我得到了实际输出,但并不总是如此

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。如何解决这个问题


提前感谢。

尝试通过WebClient或HttpWebRequest/HttpWebResponse加载您的页面,然后将结果发送到HtmlAlityPack

如果您得到空字符串或WebException,则此代码示例尝试下载页面最多5次

在生产代码中,不要简单地跳过异常,您需要小心地处理它,或者至少记录它

样本:


谢谢你,Alexander。如果我使用这个,我大部分时间都会收到html=的消息。看起来该主机页的服务器有问题,请尝试增加尝试次数
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);