Подтвердить что ты не робот

Создать большой парсер - Извлечь релевантный текст из HTML/Блоги

Я пытаюсь создать обобщенный синтаксический анализатор HTML, который хорошо работает в сообщениях в блогах. Я хочу указать свой синтаксический анализатор на конкретный URL-адрес entrie и получить чистый текст сообщения. Мой базовый подход (из python) заключался в использовании комбинации BeautifulSoup/Urllib2, что хорошо, но предполагает, что вы знаете правильные теги для записи в блоге. У кого-нибудь есть лучшие идеи?

Вот некоторые мысли, возможно, кто-то может расширить, что мне еще не хватает знаний/ноу-хау для реализации.

  • Программа unix "lynx", по-видимому, особенно хорошо разбирает сообщения в блоге - какой парсер они используют или как это можно использовать?

  • Существуют ли какие-либо службы/парсеры, которые автоматически удаляют нежелательные объявления и т.д.?

  • В этом случае у меня было смутное представление о том, что может быть хорошо, что сообщения в блоге обычно содержатся в определенном определяющем теге с class= "entry" или чем-то подобным. Таким образом, может быть возможно создать алгоритм, который обнаружил бы теги, содержащие наиболее чистый текст между ними, - любые идеи по этому поводу?

Спасибо!

4b9b3361

Ответ 1

Мальчик, у меня есть идеальное решение для вас.

Алгоритм чтения Arc90 делает именно это. Учитывая содержимое HTML, он выбирает содержание основного текста сообщения блога, игнорируя заголовки, нижние колонтитулы, навигация и т.д.

Вот реализации в:

Я через пару дней выпущу порт Perl для CPAN. Готово.

Надеюсь, это поможет!

Ответ 2

Есть проекты, которые специально смотрят на фильтрацию "шума" данной страницы. Как правило, это делается путем предоставления алгоритма нескольким примерам данного типа страницы, и он может посмотреть, какие части не меняются между ними. При этом вам нужно будет дать алгоритму несколько примеров страниц/сообщений каждого блога, который вы хотите проанализировать. Обычно это работает хорошо, когда у вас есть небольшой определенный набор сайтов, которые вы сканируете (например, в новостных сайтах). Алгоритм в основном обнаруживает шаблон, который они используют в HTML, и выделяет интересную часть. Здесь нет никакой магии, она жесткая и несовершенная.

Отличный пример этого alogrithm можно найти в исходном коде EveryBlock.com, который был только открытым. Перейдите в everyblock.com/code и загрузите пакет "ebdata" и посмотрите на модуль "templatemaker".

И я не хочу заявлять очевидное, но вы считали, что используете RSS только в блогах? Обычно поля имеют всю почту, заголовок и другую метаинформацию вместе с ними. Использование RSS будет намного проще, чем предыдущее решение, о котором я говорил.