【问题标题】:c# htmlagility pack, Page not Found时间:2019-05-10 标签:c#htmlagilitypack,Page not Found
【发布时间】:2018-11-24 19:53:32
【问题描述】:

我正在尝试使用 Htmlagility C# 加载以下网站的页面源,它​​总是返回“找不到页面”,但是当我在普通浏览器 (chrome) 中打开它时,它会显示所有内容。

        HtmlAgilityPack.HtmlWeb web = new HtmlWeb();
        HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
        doc = web.Load("http://www.alfatah.pk/");

【问题讨论】:

  • 您很可能正在尝试(可能是非法的)抓取具有某些保护措施的网站。通过使用 Fiddler 和比较请求应该很容易确认。从您自己的没有任何此类保护措施的网站开始学习网络抓取可能是个好主意。
  • 有什么办法可以抓取这个网站吗?

标签: c# html-agility-pack


【解决方案1】:

我的代码也收到了 404。不知怎的,他们意识到我们不是人类,而是网络机器人!

这对我有用:

    HtmlAgilityPack.HtmlWeb web = new HtmlWeb();
        web.UserAgent="Mozilla/5.0 (Windows NT 6.2; Win64; x64; rv:63.0) Gecko/20100101 Firefox/63.0";

        web.PreRequest += (request) =>
        {
            request.Headers.Add(HttpRequestHeader.Accept, "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
            request.Headers.Add(HttpRequestHeader.AcceptLanguage, "de-DE");
            return true;
        };
        HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();

        doc = web.Load("http://www.alfatah.pk/");

【讨论】:

  • 使用您的代码,我收到此异常“附加信息:必须使用适当的属性或方法修改 'Accept' 标头。”
  • AcceptLanguage 相同
  • request.Headers.Add(HttpRequestHeader.Accept, "text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8" ); request.Headers.Add(HttpRequestHeader.AcceptLanguage, "de-DE");
  • 对不起!但我得到了同样的异常“必须使用适当的属性或方法修改'Accept'标头。”
  • 正如我所说,它在我这边运行良好。我建议您为此问题创建一个新问题,因为它与当前问题无关。我有一些代码可以解决问题。
猜你喜欢
  • 1970-01-01
  • 2015-12-24
  • 2020-06-15
  • 2020-10-01
  • 2015-06-14
  • 2011-07-08
  • 2012-02-03
  • 2017-04-15
  • 2021-07-31
相关资源
最近更新 更多