HTMLAgilityPack 对于存在的页面返回“未找到”HTTP 响应代码

问题描述 投票:0回答:1

我正在编写自己的网络爬虫,以查找网站上的不良链接并每晚动态创建站点地图。我传入一个起始 URL,下拉内容,然后使用 HtmlAgilityPack 抓取页面以查找链接到另一个 url、图像、css、javascript 文件的任何内容。我建立了一个 URL 列表来检查并记录每个 URL 的状态。

它工作得很好,除了少数链接到外部站点的 URL 返回为“404 未找到”,但是当我转到 HtmlAgilityPack 尝试加载的 URL 时,该 URL 存在。并非所有外部链接都有此问题,大多数都返回正常。我提取文档的代码是:

var page = new HtmlWeb();
var tcs = new TaskCompletionSource<HttpWebResponse>();

page.PostResponse = delegate (HttpWebRequest request, HttpWebResponse response)
{
    tcs.SetResult(response);
};

var doc = page.Load(pageAddress);
var httpWebResponse = tcs.Task.Result;

我怀疑这可能与 HtmlAgilityPack 用于调用页面的 HttpWebRequest 中的某些内容有关,但我不太确定。有什么想法吗?

编辑,这是一个例子: https://cdn.datatables.net/1.13.2/css/jquery.datatables.min.css

c# .net html-agility-pack .net-4.8
1个回答
0
投票

这个问题最终是我自己的错:我的应用程序强制 URL 小写,显然这个 CDN 是区分大小写的。

如果你去

https://cdn.datatables.net/1.13.2/css/jquery.dataTables.min.css

该网址有效,但是

https://cdn.datatables.net/1.13.2/css/jquery.datatables.min.css

是404。

© www.soinside.com 2019 - 2024. All rights reserved.