You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用HtmlAgilityPack库下载HTML出错,无法爬取指定网站

解决HtmlAgilityPack异步加载网页失败的问题

看起来你遇到的问题大概率是目标网站的反爬机制在起作用——你的代码使用HtmlWeb默认配置发起请求,缺少浏览器标识等关键请求头,被服务器拒绝或返回异常内容,导致加载HTML失败。下面是具体的解决方案和调试建议:

优化后的代码:模拟浏览器请求

我们可以通过HtmlWeb.PreRequest事件自定义请求头,同时调整超时、重定向等参数,让请求更接近真实浏览器的行为:

async public static Task<HtmlDocument> GetDocument() {
    HtmlDocument doc = null;
    string url = "https://www.finedininglovers.com/recipes/appetizer/vegan-dishes-white-asparagus/";
    try {
        HtmlWeb web = new HtmlWeb();
        // 设置10秒超时,避免因网络慢导致请求失败
        web.Timeout = 10000;
        // 启用自动重定向,处理网站的跳转逻辑
        web.AutoRedirect = true;
        // 自定义请求头,模拟Chrome浏览器
        web.PreRequest += (request) => {
            request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36";
            request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8";
            request.AcceptLanguage = "en-US,en;q=0.5";
            request.Referer = "https://www.finedininglovers.com/";
            return true;
        };
        doc = await web.LoadFromWebAsync(url);
    } catch (Exception ex) {
        Console.WriteLine($"错误信息:{ex.Message}");
        Console.WriteLine($"调用栈:{ex.StackTrace}");
        // 捕获WebException查看具体HTTP状态码,辅助定位问题
        if (ex is WebException webEx) {
            var response = webEx.Response as HttpWebResponse;
            if (response != null) {
                Console.WriteLine($"响应状态码:{(int)response.StatusCode} {response.StatusCode}");
            }
        }
    }
    return doc;
}

额外调试建议

  • 查看HTTP状态码:如果捕获到WebException,可以通过响应对象查看状态码(比如403代表禁止访问、404代表页面不存在),这能帮你快速判断问题类型。
  • 检查Cookie需求:如果浏览器打开该页面需要登录或保留Cookie,你可以在PreRequest事件中添加request.Headers["Cookie"] = "你的Cookie内容"来模拟登录状态。
  • 控制请求频率:部分网站会限制请求速度,你可以在请求前添加await Task.Delay(1000);,给服务器留足间隔时间,避免被判定为爬虫。

内容的提问来源于stack exchange,提问作者Sharath

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:46:50