我有这个问题 - 我正在编写一个简单的网络蜘蛛,到目前为止效果很好。问题是我正在研究的网站有时会有重新定向或添加内容的恶习。在某些页面中,它会在您加载后添加“/ about”,而在某些页面上它会完全重定向到另一个页面。 webclient变得困惑,因为它下载了html代码并开始解析链接,但由于它们中的许多都是“../../something”格式,它只是在一段时间后崩溃,因为它根据链接计算链接第一个给定的地址(在重定向或添加“/ about”之前)。当新创建的页面从队列中出来时,它会抛出404 Not Found异常(surpriiise)。
现在我可以自己添加“/ about”到每个页面,但是对于屎和咯咯笑,网站本身并不总是添加它...
我很感激任何想法。 谢谢你的时间和所有最好的!
答案 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解析链接