Инструменты для интеллектуального анализа данных рукописные HTML - PullRequest
0 голосов
/ 09 августа 2009

Мне нужно преобразовать большой веб-сайт из статического HTML, написанного полностью людьми, в надлежащие реляционные данные. Сначала появляется большое количество таблиц (не обязательно одинаковых для каждой страницы), затем код, подобный этому:

<a name=pidgin><font size=4 color=maroon>Pidgin</font><br></a>
<font size=2 color=teal>Author:</font><br>
<font size=2>Sean Egan</font><br>
<font size=2 color=teal>Version:</font><br>
<font size=2>2.6.8</font><br>
<font size=2><a href="http://pidgin.im/"><br>
    <img src="images/homepage.jpg"></a>
</font><br>
<br><br><br>

<a name=psi><font size=4 color=maroon>Psi</font><br></a>
<font size=2 color=teal>Version:</font><br>
<font size=2>0.13</font><br>
<font size=2 color=teal>Screenshots:</font><br>
<a href="images/screenshots/psi/1.jpg">
    <img src="images/screenshots/psi/1_s.jpg">
</a>
<a href="images/screenshots/psi/2.jpg">
    <img src="images/screenshots/psi/2_s.jpg">
</a><br>
<br><br><br>

, а затем снова несколько таблиц. Я пытался использовать анализатор HTML и искал [имя] (селектор CSS), но некоторые записи всегда терялись: иногда из-за нехорошего HTML, написанного гражданскими лицами, он думает, что некоторые записи находятся внутри каждой другой вместо плоского списка. Прямо сейчас я использую некоторые регулярные выражения Vim, сгруппированные в функцию, которая преобразует этот код в XML, но это тоже не серебряная пуля: большинство выходных файлов плохо сформированы, потому что проскальзывает какой-то HTML.

Итак, мне интересно, какие инструменты существуют для выполнения подобных задач?

Ответы [ 2 ]

3 голосов
/ 09 августа 2009

Первое, что нужно сделать, - это ввести введенный HTML-код с помощью инструмента, подобного HTML Tidy , чтобы хотя бы убедиться, что он действителен (X) HTML. Тогда я бы использовал какой-нибудь синтаксический анализ на основе dom (а не reg-ex) для прохождения кода.

1 голос
/ 09 августа 2009

Если вы знакомы с Python, BeautifulSoup был создан, чтобы решить именно эту проблему:

"Вы не написали эту ужасную страницу. Вы просто пытаетесь извлечь из нее некоторые данные."

Я использовал BeautifulSoup для такой работы раньше, и это очень хорошо.

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