#xml #beautifulsoup #raw-data
#xml #beautifulsoup #необработанные данные
Вопрос:
Добрый день,
Я использую BeautifulSoup для анализа XML-файла, который имеет тег, подобный приведенному ниже образцу, который содержит некоторые двоичные данные:
<data length=1234 encoding="x-modified">
:MANEG9amp;3I6%1I8CN!68<ID(E]*%N]Y/J;:6EYM6amp;N:9<E9).YA*I:94*]9O.[Y
R;59Z0LEWY;74*:E!5YWM8KE[AE;48:5N"I74*:H(E#L79X57ZG1'E:85=YVE68,
:3=5=:Bamp;FVN-Y(EU;UJ:*28FSQ#F6,ID'V:EE-JVN=APE:9Xamp;8EYFL<67TI$DBR0
........
</data>
Тег, атрибуты и двоичные данные считываются неправильно, как показано ниже:
<data>1234 encoding="x-modified"amp;>
:MANEG93I6%1I8CN!68<ID>(E]*%N]Y/J;:6EYM6<E9>).YA*I:94*]9O.[Y
R;59Z0LEWY;74*:E!5YWM8KE[AE;48:5N"I74*:H(E#L79X57ZG1'E:85=YVE68,
:3=5=:B(EU;UJ:*28FSQ#F6,ID'V:EE-JVN=APE:9X8EYFL</E9></ID></data>
Обратите внимание, как усекаются данные, когда в данных встречается символ «<«. Также обратите внимание, что атрибут ‘length’ удаляется при чтении тега.
Любые идеи, как я могу обойти это, приветствуются.
Спасибо.
Ответ №1:
Вы описываете это как XML-файл, но это не так.
Данные представляют собой полный беспорядок (в XML «<» не допускается в текстовых узлах без экранирования), и хотя BeautifulSoup делает все возможное, чтобы создать порядок из хаоса, это не волшебство, и в этом примере он явно терпит неудачу.
Моя рекомендация состояла бы в том, чтобы использовать такие стандарты, как XML или JSON для передачи данных, вместо нечетких приближений без формального определения. Вы не сможете надежно анализировать файлы данных, если у вас нет спецификации формата.