Вы вводите нас в заблуждение, потому что вы не включили трассировку стека, которая рассказывает другую историю. При тестировании вашего кода я получил следующую трассировку стека:
Traceback (most recent call last):
File "test.py", line 38, in <module>
main()
File "test.py", line 32, in main
article += text.decode('utf-8')
File "C:\python-3.7\env\lib\site-packages\bs4\element.py", line 1559, in decode
indent_space = (' ' * (indent_level - 1))
TypeError: unsupported operand type(s) for -: 'str' and 'int'
Итак, это не дополнение в вашем коде вызывает исключение, а вычитание в коде bs4.
причина, по которой вы получаете это исключение, заключается в том, что вы вызываете decode()
, используя неверные аргументы. Он определяется следующим образом:
decode(indent_level=None, eventual_encoding='utf-8', formatter='minimal')
Таким образом, text.decode('utf-8')
из вашего кода эквивалентно text.decode(indent_level='utf-8')
, и это не имеет смысла, следовательно, исключение.
Вы можете исправить ошибка с использованием:
article += text.decode(eventual_encoding='utf-8')
или
article += text.decode(None, 'utf-8')
PS: В следующий раз, пожалуйста, включите трассировку стека в ваш вопрос; -)