fp = open("output.txt","w")
дает открытый файл для ввода текста с использованием кодировки по умолчанию, в вашем случае это кодировка, которая не имеет характер ✓
(вероятно, CP1252), отсюда и ошибки. Откройте файл с кодировкой, которая поддерживает его, и вы будете в порядке:
fp = open('output.txt', 'w', encoding='utf-8')
Следует также отметить, что:
print("result: "+ str(ele))
может потерпеть неудачу, если консоль не поддерживает Unicode, который под Windows, это вероятно не будет. Используйте print(ascii(...))
, чтобы получить ASCII-безопасное представление для целей отладки.
Вероятная причина, по которой ваша попытка избавиться от символов, отличных от ASCII, заключается в том, что вы удаляете их до, анализируя HTML, а не из значений, которые вы получаете после разбора. Таким образом, литерал ✓
будет удален, но если бы использовалась ссылка на символ, например ✓
, она осталась бы в покое, проанализирована с помощью bs4 и закончится как ✓
.
(мне грустно, что реакция по умолчанию ошибок Unicode всегда кажется, чтобы попытаться избавиться от не-ASCII символов полностью, а не фиксируя код для обработки их правильно.)
Вы также извлекая текст довольно странным образом, используя str()
, чтобы получить разметку, а затем попытаться выделить теги и удалить их. Это ненадежно - HTML не так просто разобрать, вот почему BeautifulSoup - вещь - и ненужная, потому что у вас уже есть отличный HTML-парсер, который может дать вам чистый текст в элементе (get_text()
).
Вам не нужно обрабатывать некоторые символы специальных , Продолжайте работать со строками unicode все время. – Daniel
@Daniel Когда я пишу это в файл, он показывает эту ошибку. Вот почему я задал этот вопрос. Как отформатировать его в формате, который можно записать в файл? –
http://ideone.com/lwJ76U Вот эта ссылка для кода @Daniel –