C# NET.WebClient DownloadString() Проблема - перенаправления страниц
У меня есть эта проблема - я пишу простой веб-паук, и пока он работает хорошо. Проблема в том, что сайт, над которым я работаю, имеет неприятную привычку перенаправлять или добавлять что-то по адресу. На некоторых страницах он добавляет "/about" после их загрузки, а на некоторых он полностью перенаправляет на другую страницу. Веб-клиент запутывается, так как он загружает HTML-код и начинает анализировать ссылки, но, поскольку многие из них находятся в формате "../../something", через некоторое время он просто падает, потому что он вычисляет ссылку в соответствии с первый указанный адрес (перед перенаправлением или добавлением "/about"). Когда вновь созданная страница выходит из очереди, она выдает исключение 404 Not Found (сюрприз).
Теперь я могу просто добавить "/about" на каждую страницу, но для дерьма и хихиканья сам сайт не всегда добавляет его...
Буду признателен за любые идеи. Спасибо за ваше время и всего наилучшего!
1 ответ
Если вы хотите получить перенаправленный 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