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

Другие вопросы по тегам