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