tro*_*ter 1 c# webclient web-crawler downloadstring
我有这个问题 - 我正在编写一个简单的网络蜘蛛,到目前为止效果很好。问题是我正在工作的网站有一个令人讨厌的习惯,有时会重定向或向地址添加内容。在某些页面中,它会在加载后添加“/about”,而在某些页面上,它会完全重定向到另一个页面。Web 客户端会感到困惑,因为它下载了 html 代码并开始解析链接,但由于其中许多链接的格式为“../../something”,所以一段时间后它就会崩溃,因为它根据以下内容计算链接第一个给定地址(在重定向或添加“/about”之前)。当新创建的页面从队列中出来时,它会抛出 404 Not Found 异常(令人惊讶)。
现在我可以自己将“/about”添加到每个页面,但是对于狗屎和傻笑,网站本身并不总是添加它......
我将不胜感激任何想法。感谢您抽出宝贵时间,祝一切顺利!
小智 5
如果您想获取页面的重定向 URI 以解析其中的链接,请使用 WebClient 的子类,如下所示:
class MyWebClient : WebClient
{
Uri _responseUri;
public Uri ResponseUri
{
get { return _responseUri; }
}
protected override WebResponse GetWebResponse(WebRequest request)
{
WebResponse response = base.GetWebResponse(request);
_responseUri = response.ResponseUri;
return response;
}
}
Run Code Online (Sandbox Code Playgroud)
现在使用 MyWebClient 而不是 WebClient 并使用 ResponseUri 解析链接