1

我有这个问题 - 我正在编写一个简单的网络蜘蛛,到目前为止它运行良好。问题是我正在处理的网站有时会重定向或添加东西到地址的讨厌习惯。在某些页面中,它会在您加载它们后添加“/about”,而在某些页面中,它会完全重定向到另一个页面。webclient 会因为下载 html 代码并开始解析链接而感到困惑,但由于其中许多是“../../something”格式,所以它会在一段时间后崩溃,因为它根据计算链接第一个给定地址(在重定向或添加“/about”之前)。当新创建的页面从队列中出来时,它会抛出 404 Not Found 异常(惊喜)。

现在我可以自己在每个页面上添加“/about”,但是对于狗屎和傻笑,网站本身并不总是添加它......

我会很感激任何想法。感谢您的宝贵时间,祝您一切顺利!

4

1 回答 1

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;
    }
}

现在使用 MyWebClient 而不是 WebClient 并使用 ResponseUri 解析链接

于 2013-03-15T09:33:10.517 回答