Есть ли что-нибудь для Python, который похоже на читаемость.

StackOverflow https://stackoverflow.com/questions/2921237

Вопрос

Я ищу пакет / модуль / функцию и т. Д., Это примерно на питонском эквиваленте arc90 readibity.js

http://lab.arc90.com/experiments/ Ударность

http://lab.arc90.com/experiments/readability/js/readability.js.

Так что я могу дать ему некоторую ввод .html, и результат очищается версия этой HTML-страницы "основной текст«. Я хочу это так, чтобы я мог использовать его на стороне сервера (в отличие от версии JS, которая работает только на стороне браузера).

Есть идеи?

PS: Я попробовал Rhino + Env.js и эту комбинацию работает, но производительность неприемлема, требуется протокола минут, чтобы убрать большую часть содержимого HTML :( (все еще не могла найти, почему есть такая большая разница в производительности).

Это было полезно?

Решение

Пожалуйста, попробуйте мою вилку https://github.com/buriy/python- Удваимость Это быстро и имеет все особенности новейшей версии JavaScript.

Другие советы

Мы только что запустили новые API обработки натурального языка на Regustate.com. Использование API для отдыха вы можете очистить любой HTML или PDF и вернуть только текстовые детали. Наш API свободен, поэтому не стесняйтесь использовать к контенту вашего сердца. И это реализовано в Python. Проверьте это и сравните результаты для читаемости. Я думаю, что вы найдете, что они почти на 100% то же самое.

Hn.py. через Блог читабельности. Читаемые каналы, приложение App Engine использует его.

Я в комплекте это как установочный модуль PIP-модуля: http://github.com/srid/radability.

Я сделал некоторые исследования по этому в прошлом и закончил реализацию Этот подход [PDF в питоне. Окончательная версия I реализована, также сделала некоторую очистку перед применением алгоритма, например, для удаления элементов головы / скрипта / IFrame, скрытые элементы и т. Д., Но это было ядро.

Вот функция с (очень) наивной реализацией дискриминатора «Ссылки», который пытается удалить элементы с тяжелой ссылкой на текстовое соотношение (т. Е. Навигационные полосы, меню, реклама и т. Д.):

def link_list_discriminator(html, min_links=2, ratio=0.5):
    """Remove blocks with a high link to text ratio.

    These are typically navigation elements.

    Based on an algorithm described in:
        http://www.psl.cs.columbia.edu/crunch/WWWJ.pdf

    :param html: ElementTree object.
    :param min_links: Minimum number of links inside an element
                      before considering a block for deletion.
    :param ratio: Ratio of link text to all text before an element is considered
                  for deletion.
    """
    def collapse(strings):
        return u''.join(filter(None, (text.strip() for text in strings)))

    # FIXME: This doesn't account for top-level text...
    for el in html.xpath('//*'):
        anchor_text = el.xpath('.//a//text()')
        anchor_count = len(anchor_text)
        anchor_text = collapse(anchor_text)
        text = collapse(el.xpath('.//text()'))
        anchors = float(len(anchor_text))
        all = float(len(text))
        if anchor_count > min_links and all and anchors / all > ratio:
            el.drop_tree()

На тестовом корпусе я использовал его на самом деле очень хорошо работал, но достижение высокой надежности потребует большого настройки.

Почему бы не попробовать использовать Google V8 / Node.js вместо носорога? Это должно быть приемлемо быстро.

я думаю BeautifulSoup Лучший HTML-парсер для Python. Но вам все еще нужно выяснить, какая «главная» часть сайта.

Если вы разбираетесь только один домен, это довольно прямо вперед, но нахождение шаблона, которое работает для Любые Сайт не так просто.

Может быть, вы можете портировать доступность. Джей подход к Python?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top