Как бы вы решили эту проблему?
Вы очищаете HTML блогов. Часть HTML-кода блога - это сообщения блога, часть - форматирование, боковые панели и т. д. Вы хотите иметь возможность определять, какой текст в HTML принадлежит какому сообщению (т.е. постоянная ссылка), если таковая имеется.
Я знаю, о чем вы думаете: вы можете просто посмотреть RSS и полностью игнорировать HTML! Однако RSS очень часто содержит только очень короткие отрывки или удаляет ссылки, которые могут вас заинтересовать. Вы хотите существенно сократить отрывок RSS, используя вместе HTML и RSS одной и той же страницы.
Запись RSS выглядит так:
title excerpt of post body permalink
Сообщение в блоге в HTML выглядит так:
title (surrounded by permalink, maybe) ... permalink, maybe ... post body ... permalink, maybe
Таким образом, HTML-страница содержит те же поля, но размещение постоянной ссылки заранее не известно, и поля будут разделены некоторым шумовым текстом, который в основном состоит из HTML и пробелов, но также может содержать некоторые дополнительные метаданные, такие как «опубликовано Джонни. "или дату, или что-то в этом роде. Текст также может быть представлен немного иначе в HTML и RSS, как описано ниже.
Дополнительные правила / предостережения:
100% точность - это ограничение нет. Однако чем точнее, тем лучше.
Что бы ты сделал?
переписал вступление, надеюсь, оно чуточку понятнее





RSS на самом деле довольно просто анализировать с помощью XPath любого анализатора XML (или регулярных выражений, но это не рекомендуется), вы просматриваете теги <item> в поисках <title>, <link>, <description>.
Затем вы можете опубликовать их как разные поля в базе данных или напрямую объединить их в HTML. Если <description> отсутствует, вы можете очистить ссылку (один из способов - сравнить несколько страниц, чтобы отсеять части макета HTML).
Я бы создал парсер для каждой из основных систем ведения блогов. Начните с основного текста для одного сообщения на странице.
Если вам повезет, то движок предоставит разумный XHTML, так что вы можете придумать ряд полезных выражений XPath, чтобы получить узел, соответствующий статье. Если нет, то я боюсь, что это ТегСуп или Аккуратный, чтобы преобразовать его в правильно сформированный XML.
Оттуда вы можете искать метаданные и полный текст. Это должно безопасно удалить верхние / нижние колонтитулы / боковые панели / виджеты / рекламу, хотя может оставить встроенные объекты и т. д.
Также должно быть довольно легко (TM) сегментировать страницу на метаданные статьи, текст, комментарии и т. д. И помещать ее в довольно разумный элемент RSS / Atom.
Это будет основой для преобразования RSS-канала (неполного текста) в полнотекстовый (путем перехода по постоянным ссылкам, указанным в официальном RSS).
Если у вас есть парсер для движка блога, вы можете приступить к написанию детектора - чего-то, что будет основой для определения «данной страницы, на каком движке блога она была опубликована».
При наличии достаточного количества скребков и детекторов должна быть возможность указать данный канал RSS / Atom и преобразовать его в полнотекстовый канал.
Однако у этого подхода есть ряд проблем:
Я пытаюсь придумать достойный запасной вариант, но я отредактирую, как только у меня появится.
возникли проблемы с поиском тех первых пара абзацев. Редактировать?