Библиотеки Java для извлечения текстовых блоков из HTML-страниц
Я хочу извлечь текстовые блоки из HTML-страницы, и я использую шаблон для этого. Он отлично работает для одного текста на странице, но на некоторых страницах, таких как блоги, на странице несколько текстов.
Я хочу извлечь все тексты, но идентифицируя каждый как отдельный текст, а не только один.
Есть какая-нибудь библиотека, которая может это сделать?
РЕДАКТИРОВАТЬ: Я использую Jsoup для синтаксического анализа HTML, но я не хочу делать синтаксический анализ, но извлечение информации, как шаблон, делают на страницах. Я хочу протестировать другой подобный инструмент.
3 ответа
JSoup является очень широко используемым парсером для задач такого типа. Пожалуйста, проверь это.
Ну, лично мне понравилось использовать Doj вместе с HtmlUnit. В основном Doj представляет нечто похожее на CSS-селекторы для Java.
Пример (с официальной страницы):
Doj spanDoj = Doj.on(page).get("#updates tr", 1).get("td", 2).get("span.item");
Вы можете увидеть более сложный пример на связанной странице (прокрутите его вниз).
Самая близкая библиотека Java, о которой я знаю, - это проект Road Runner: http://www.dia.uniroma3.it/db/roadRunner/ Это система, которая может создавать специальный вид регулярного выражения на токенах в документе HTML, который может (во многих случаях) обнаруживать шаблоны такого типа по нескольким документам на основе одного шаблона. Это может быть достигнуто для блогов, например, просматривая постраничные страницы. Вам, вероятно, все равно придется выбирать, какие именно повторяющиеся шаблоны представляют интерес для каждого сайта.
Что касается блогов, я бы, вероятно, искал ссылку на ленту новостей в заголовке блога и использовал бы библиотеку синтаксического анализа каналов для анализа постоянных ссылок для каждой статьи. Просканируйте их и используйте шаблон (это необходимо только потому, что многие блоги не содержат полный текст в ленте RSS/Atom). Многие блоги также не содержат полного текста на главной странице, поэтому я бы сосредоточился на методах определения постоянных ссылок и пошел оттуда.