C#NET.WebClient DownloadString()问题 - 页面重定向

时间:2013-03-15 08:56:36

标签: c# web-crawler webclient downloadstring

我有这个问题 - 我正在编写一个简单的网络蜘蛛,到目前为止效果很好。问题是我正在研究的网站有时会有重新定向或添加内容的恶习。在某些页面中,它会在您加载后添加“/ about”,而在某些页面上它会完全重定向到另一个页面。 webclient变得困惑,因为它下载了html代码并开始解析链接,但由于它们中的许多都是“../../something”格式,它只是在一段时间后崩溃,因为它根据链接计算链接第一个给定的地址(在重定向或添加“/ about”之前)。当新创建的页面从队列中出来时,它会抛出404 Not Found异常(surpriiise)。

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

我很感激任何想法。 谢谢你的时间和所有最好的!

1 个答案:

答案 0 :(得分:4)

如果要获取页面的重定向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解析链接