c# - HtmlAgilityPack HtmlWeb.Load 返回空文档

标签 c# html web-crawler html-agility-pack

过去 2 个月我一直在 Web 爬虫应用程序中使用 HtmlAgilityPack,加载网页没有任何问题。

现在当我尝试加载这个特定的网页时,文档 OuterHtml 是空的,所以这个测试失败了

var url = "http://www.prettygreen.com/";
var htmlWeb = new HtmlWeb();
var htmlDoc = htmlWeb.Load(url);
var outerHtml = htmlDoc.DocumentNode.OuterHtml;
Assert.AreNotEqual("", pageHtml);

我可以毫无问题地从站点加载另一个页面,例如设置

url = "http://www.prettygreen.com/news/";

在过去,我曾经遇到过编码问题,我试过 htmlWeb.OverrideEncoding 和 htmlWeb.AutoDetectEncoding 但没有成功。我不知道此网页可能存在什么问题。

最佳答案

该网站似乎需要启用 cookie。因此,为您的网络请求创建一个 cookie 容器应该可以解决这个问题:

var url = "http://www.prettygreen.com/";
var htmlWeb = new HtmlWeb();
htmlWeb.PreRequest += request =>
    {
        request.CookieContainer = new System.Net.CookieContainer();
        return true;
    };
var htmlDoc = htmlWeb.Load(url);
var outerHtml = htmlDoc.DocumentNode.OuterHtml;
Assert.AreNotEqual("", outerHtml);

关于c# - HtmlAgilityPack HtmlWeb.Load 返回空文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13400493/

相关文章:

c# - 无法将默认比较器作为 IComparer<object>

c# - 如何使用 FtpWebRequest 上传图片?

c# - C# 中的 Paypal IPN 监听器问题

c# - 在 64 位机器上运行 x86 编译代码时,单精度算术被破坏

html - Coldfusion 80 标签模板

javascript - 将禁用属性添加到 React 中动态创建的按钮

Python - 使用 BeautifulSoup 在页面中抓取多个类

html - 如何制作一个表的第一行比其他行更多的列?

ip - 爬虫/蜘蛛IP地址的良好来源

storage - 阻止 rsync 删除未完成的源文件