Определить, являются ли данные RSS или HTML на Python - PullRequest
1 голос
/ 21 мая 2010

Есть ли функция или метод, который я мог бы вызвать в Python
Это скажет мне, если данные RSS или HTML?

Ответы [ 2 ]

2 голосов
/ 21 мая 2010

Вы всегда можете проанализировать его самостоятельно, чтобы найти тег xml (для RSS) или html (для HTML).

0 голосов
/ 21 мая 2010

Типы файлов, как правило, должны определяться вне диапазона. например. если вы извлекаете файл с веб-сервера, то местом для поиска будет заголовок Content-Type ответа HTTP. Если вы выбираете локальный файл, у файловой системы будет способ определения типа файла - в Windows, который будет искать расширение файла.

Если ничего из этого не доступно, вам придется прибегнуть к анализу контента. Это никогда не бывает абсолютно надежным, и RSS особенно раздражает, потому что существует несколько несовместимых версий, но самое лучшее, что вы могли бы сделать, это:

  1. Попытка проанализировать содержимое с помощью анализатора XML. Если это не удается, контент не является правильно сформированным XML, поэтому не может быть RSS.

  2. Посмотрите на document.documentElement.namespaceURI. Если это http://www.w3.org/1999/xhtml, у вас есть XHTML. Если это http://www.w3.org/1999/02/22-rdf-syntax-ns#, у вас есть RSS (одного варианта).

  3. Если document.documentElement.tagName равен rss, у вас есть RSS (немного другого вида).

Если файл не может быть проанализирован как XML, он вполне может быть HTML (или некоторым приближением к теговому супу). Вполне возможно, что это также может быть сломан RSS. В этом случае большинство инструментов подачи отклонят его. Если вам все еще нужно обнаружить этот случай, вам нужно будет искать строки вроде <html или <rss или <rdf:RSS в начале файла. Это было бы еще более ненадежным.

...