- Регистрация
- 07.05.2015
- Сообщения
- 2 177
- Благодарностей
- 2 184
- Баллы
- 113
Сейчас имею свой парсер на регулярках + HtmlDecode (хотя эту связку лучше на HtmlAgilityPack заменить). Но он просто весь текст вытягивает со страницы. А хотелось бы как-то умно достать только главный блок с телом статьи.
Пока у меня такие варианты:
1. В настройках указал брать только явные предложения (начинающиеся с большой буквы, заканчивающиеся на символы «!.?», удалять слишком короткие предложения. Это помогает отсечь текст из разделов меню, но это метод через попу, так как он удалит и короткие предложения в самой статье, если такие встретятся, а также списки внутри сложно оформленных статьей.
2. Можно идти по методу исключения: удалять из кода блоки <div>, <span> с признаками (class \ ID) слов “footer\menu\comment\@copyright”, но все-равно что-то останется. Ведь можно натренировать парсер на популярных движках (Wordpress, DLE…), но все-равно найдутся самописные сайты, у которых верстка без обозначений структуры пойдет, и их коряво обработает.
3. Или придумывать свой метод, например: берем весь текст страницы, потом (хз каким способом, может кучей условий с подсчетами символов, предожений …) ищем концентрацию длинных предожений. Все что за пределами этой «концентрированной» зоны считаем лишним и удаляем.
Гуглил, но в основном находил старые статьи (пару лет) без ответов:
toster.ru - Как получить содержательную часть страницы?
stackoverflow - Как-распарсить-html-в-net
Может появились какие-то новые решения на C#? Можно отдельной библиотекой. К примеру, есть библиотека https://pypi.python.org/pypi/jusText (нашел тут на форуме), но она под питон, а надо бы что-то под C#, чтобы в зенку встроить.
Пока у меня такие варианты:
1. В настройках указал брать только явные предложения (начинающиеся с большой буквы, заканчивающиеся на символы «!.?», удалять слишком короткие предложения. Это помогает отсечь текст из разделов меню, но это метод через попу, так как он удалит и короткие предложения в самой статье, если такие встретятся, а также списки внутри сложно оформленных статьей.
2. Можно идти по методу исключения: удалять из кода блоки <div>, <span> с признаками (class \ ID) слов “footer\menu\comment\@copyright”, но все-равно что-то останется. Ведь можно натренировать парсер на популярных движках (Wordpress, DLE…), но все-равно найдутся самописные сайты, у которых верстка без обозначений структуры пойдет, и их коряво обработает.
3. Или придумывать свой метод, например: берем весь текст страницы, потом (хз каким способом, может кучей условий с подсчетами символов, предожений …) ищем концентрацию длинных предожений. Все что за пределами этой «концентрированной» зоны считаем лишним и удаляем.
Гуглил, но в основном находил старые статьи (пару лет) без ответов:
toster.ru - Как получить содержательную часть страницы?
stackoverflow - Как-распарсить-html-в-net
Может появились какие-то новые решения на C#? Можно отдельной библиотекой. К примеру, есть библиотека https://pypi.python.org/pypi/jusText (нашел тут на форуме), но она под питон, а надо бы что-то под C#, чтобы в зенку встроить.