Кодек utf-8 не может декодировать байт 0xf6 в позиции 139604: недопустимый начальный байт
Я делаю проект по разработке знаний.
Когда я сканировал персональный сайт некоторых ученых, эта ошибка произошла.
import html2text
import requests
from urllib.request import urlopen
from bs4 import BeautifulSoup
import re
import urllib
homepage = "http://angom.myweb.cs.uwindsor.ca"
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0'}
req = urllib.request.Request(url=homepage, headers=headers)
print(req)
c = urlopen(req).read()
print(type(c))
content = urlopen(req).read().decode("utf-8")
UnicodeDecodeError: кодек "utf-8" не может декодировать байт 0xf6 в позиции 139604: недопустимый начальный байт
1 ответ
Кодировка в заголовке страницы гласит:
<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
.. так что используйте это при декодировании строки.
content = urlopen(req).read().decode("windows-1252")
будет работать в этом случае.
Если вы планируете использовать BeautifulSoup, он уже отлично справляется с выяснением кодировки.