Я пытаюсь написать (очень) базовый веб-искатель, используя библиотеку cURL и Python BeautifulSoup
(так как это намного легче понять, чем GNU awk и беспорядок регулярных выражений).Python sys.stdin выбрасывает UnicodeDecodeError
В настоящее время я пытаюсь трубы содержимое веб-страницы в программе с CURL (т.е. curl http://www.example.com/ | ./parse-html.py
)
По какой-то причине, Python бросает UnicodeDecodeError
из-за недопустимого стартового байта (я посмотрел на this answer и this answer о недопустимых стартовых байтах, но не выяснили, как решить проблему из них).
В частности, я попытался использовать a.encode('utf-8').split()
с первого ответа. Второй ответ просто объяснил проблему (что Python обнаружил недопустимый стартовый байт), хотя он не дал решения.
Я попытался перенаправив вывод завитка в файл (то есть, curl http://www.example.com/ > foobar.html
и внесения изменений в программу, чтобы принять файл в качестве аргумента командной строки, хотя это приводит к тому же UnicodeDecodeError
.
Я проверил , а выход locale charmap
является UTF-8
, который, насколько я знаю, означает, что моя система кодирования символов в UTF-8
(что делает меня особенно путать об этом UnicodeDecodeError
.
на данный момент точная линия вызывает ошибку в html_doc = sys.stdin.readlines().encode('utf-8').strip()
. Я пробовал переписать это как for-loop, хотя я получаю тот же i СГУП.
Что именно вызывает UnicodeDecodeError
и как исправить проблему?
РЕДАКТИРОВАТЬ: Изменяя линию html_doc = sys.stdin.readlines().encode('utf-8').strip()
к html_doc = sys.stdin
устраняет проблему