Использование читабельности python

(https://github.com/buriy/python-readability)

Я изо всех сил пытаюсь использовать эту библиотеку и не могу найти для нее никакой документации. (Есть ли?)

Есть какие-то полезные штуки, вызывающие help(Document), но все равно что-то не так.

Мой код до сих пор:

from readability.readability import Document
import requests

url = 'http://www.somepage.com'

html = requests.get(url, verify=False).content
readable_article = Document(html,   negative_keywords='test_keyword').summary()

with open('test.html', 'w', encoding='utf-8') as test_file:
    test_file.write(readable_article)

В соответствии с выводом help(Document) должна быть возможность использовать список для ввода отрицательных_ключевых слов.

readable_article = Document(html, negative_keywords=['test_keyword1', 'test-keyword2').summary()

Выдает кучу ошибок, которых я не понимаю:

Трассировка (последний последний вызов): Файл "/usr/lib/python3.4/site-packages/readability/readability.py", строка 163, в сводке кандидатов = self.score_paragraphs() Файл "/usr/lib/python3 .4/site-packages/readability/readability.py", строка 300, в score_paragraphs кандидаты[parent_node] = self.score_node(parent_node) File "/usr/lib/python3.4/site-packages/readability/readability.py ", строка 360, в score_node content_score = self.class_weight(elem) File "/usr/lib/python3.4/site-packages/readability/readability.py", строка 348, в class_weight, если self.negative_keywords и self.negative_keywords .search(feature): AttributeError: объект 'list' не имеет атрибута 'search' Traceback (последний последний вызов): File "/usr/lib/python3.4/site-packages/readability/readability.py", строка 163 , в итоговых кандидатах = self.score_paragraphs() Файл "/usr/lib/python3.4/site-packages/readability/readability.py", строка 300, в кандидате score_paragraphs s[parent_node] = self.score_node(parent_node) File "/usr/lib/python3.4/site-packages/readability/readability.py", строка 360, в score_node content_score = self.class_weight(elem) File "/usr /lib/python3.4/site-packages/readability/readability.py", строка 348, в class_weight, если self.negative_keywords и self.negative_keywords.search(feature): AttributeError: объект "список" не имеет атрибута "поиск"

Может ли кто-нибудь дать мне подсказку об ошибке или как с ней бороться?


person user3199535    schedule 26.06.2016    source источник
comment
Это не куча ошибок, а стек ошибок. Он показывает одну ошибку и все вызовы функций, которые привели к этой точке. Другими словами, информация о том, как это произошло.   -  person hpaulj    schedule 26.06.2016


Ответы (1)


Ошибка в коде библиотеки. Если вы посмотрите на compile_pattern:

def compile_pattern(elements):
    if not elements:
        return None
    elif isinstance(elements, (list, tuple)):
        return list(elements)
    elif isinstance(elements, regexp_type):
        return elements
    else:
        # assume string or string like object
        elements = elements.split(',')
        return re.compile(u'|'.join([re.escape(x.lower()) for x in elements]), re.U)

Вы можете видеть, что он возвращает регулярное выражение только в том случае, если elements не равно None, не является списком или кортежем и не является регулярным выражением.

Однако позже он предполагает, что self.negative_keywords является регулярным выражением. Итак, я предлагаю вам ввести свой список в виде строки в виде "test_keyword1,test_keyword2". Это гарантирует, что compile_pattern вернет регулярное выражение, которое должно исправить ошибку.

person Rushy Panchal    schedule 26.06.2016
comment
@ user3199535 Конечно! Уже есть запрос на вытягивание, который кто-то сделал для решения этой проблемы. - person Rushy Panchal; 26.06.2016