Как Вы обрабатываете уродливый HTML в Perl?

Попробуйте следующий

var names = (from dr in dataTable.Rows
             select (string)dr["Name"]).Distinct().OrderBy(name => name);

, это должно работать на то, в чем Вы нуждаетесь.

5
задан Sinan Ünür 27 October 2009 в 22:36
поделиться

3 ответа

Не следует использовать анализатор XML для анализа HTML. Используйте синтаксический анализатор HTML.

Обратите внимание, что следующий HTML-код является совершенно допустимым (и синтаксический анализатор XML подавился бы им):

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" 
    "http://www.w3.org/TR/html4/strict.dtd">

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Is this valid?</title>
</head>

<body>

<p>This is a paragraph

<table>

<tr>  <td>cell 1  <td>cell 2
<tr>  <td>cell 3  <td>cell 4

</table>

</body>

</html>

На CPAN есть много специфичных для задач (в дополнение к общему назначению) анализаторов HTML. Они отлично работали для меня с огромным количеством чрезвычайно беспорядочного (и в большинстве случаев недействительного) HTML.

Можно было бы дать конкретные рекомендации, если бы вы могли указать проблему, которую пытаетесь решить.

Там это также HTML :: TreeBuilder :: XPath , который использует HTML :: Parser для синтаксического анализа документа в дерево, а затем позволяет вам запрашивать его с помощью XPath. Я никогда им не пользовался, но видел HTML Scraping with XPath

Рэндала Шварца.

Учитывая HTML-файл выше, следующий короткий сценарий:

13
ответ дан 18 December 2019 в 11:58
поделиться

Вы можете перефразировать вопрос следующим образом:

Меня интересует синтаксический анализатор, который мог бы взять искаженную HTML-страницу C-код и преобразовать его в правильно сформированный Исходный код HTML C перед выполнением некоторых запросов XPath компиляцией и связыванием с ним. Вы знаете что-нибудь?

Теперь вопрос может быть более очевидным: это будет нелегко. Если это действительно искаженный HTML, вам может потребоваться проделать работу вручную, пока он не будет загружен в анализатор HTML. Затем вы можете использовать любой из других модулей, представленных здесь, для выполнения работы. Однако маловероятно, что вы когда-нибудь сможете программно перевести необработанный HTML в строго допустимый xhtml.

1
ответ дан 18 December 2019 в 11:58
поделиться

Если вы не хотите узнать больше о колесах , используйте код HTML Tidy .

1
ответ дан 18 December 2019 в 11:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: