Проверьте, является ли URL текстовым / html или другими типами файлов, такими как изображения - PullRequest
0 голосов
/ 03 февраля 2012

Я пишу свой собственный сканер C # 4.0 WPF.В настоящее время я использую htmlagilitypack для обработки html-документов.

Теперь, как показано ниже, я загружаю страницы

HtmlWeb hwWeb = new HtmlWeb();
hwWeb.UserAgent = lstAgents[GenerateRandomValue.GenerateRandomValueMin(irAgentsCount, 0)];
hwWeb.PreRequest = OnPreRequest;
HtmlDocument hdMyDoc;

hwWeb = new HtmlWeb
                {
                    AutoDetectEncoding = false,
                    OverrideEncoding = Encoding.GetEncoding("iso-8859-9"),
                };
hdMyDoc = hwWeb.Load(srPageUrl);


        private static bool OnPreRequest(HttpWebRequest request)
    {
        request.AllowAutoRedirect = true;
        return true;
    }

Теперь мой вопрос: я хочу определить, является ли данный URL текст/ HTML (сканируемый контент) или изображения / PDF просто другие типы.Как я могу это сделать?

Большое спасибо за ответы.

C # 4.0, приложение WPF

Ответы [ 3 ]

5 голосов
/ 03 февраля 2012

Вместо того, чтобы полагаться на HTMLAgilityPack, чтобы загрузить его для вас, вы можете загрузить страницу с HttpWebRequest, которая содержит свойство на HttpWebResponse, которое вы можете проверить. Это позволит вам выполнить проверку перед попыткой анализа содержимого.

2 голосов
/ 03 февраля 2012

Вы хотите прочитать тип содержимого в заголовке ответа. Я не думаю, что это можно сделать с помощью пакета HtmlAgility из моего опыта работы с ним.

1 голос
/ 03 февраля 2012

Я никогда не использовал html agility pack, но я пошел дальше и посмотрел документацию.

Я вижу, что вы устанавливаете поле PreRequest в объекте HtmlWeb для делегата PreRequestHandler. Также есть поле PostResponse, которое принимает делегата PostResponseHandler. Похоже, что объект HtmlWeb будет передавать фактический ответ, полученный от сервера, в форме объекта HttpWebResponse.

Однако, когда ваш код в этом делегате заканчивается, похоже, что пакет гибкости продолжит делать то, что сделал бы. Выдает ли исключение, когда встречает не HTML? Возможно, вам придется выбросить собственное исключение из функции PostResponse и перехватить его при вызове Load ().

Как я уже сказал, я не пробовал ничего из этого. Надеюсь, это заставит вас начать в правильном направлении ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...