Я хорошо знаком с Beautiful Soup в Python, я всегда использовал для очистки живого сайта.
Теперь я очищаю локальный файл HTML ( ссылка ) (в случае, если вы хотите проверить код), единственная проблема заключается в том, что акцентированные символы не представлены правильно (это никогда не происходило со мной при очистке живых сайтов).
Это упрощенная версия код
import requests, urllib.request, time, unicodedata, csv
from bs4 import BeautifulSoup
soup = BeautifulSoup(open('AH.html'), "html.parser")
tables = soup.find_all('table')
titles = tables[0].find_all('tr')
print(titles[55].text)
, который печатает следующий вывод
2:22 - Il Destino È Già Scritto (2017 ITA/ENG) [1080p] [BLUWORLD]
, в то время как правильный вывод должен быть
2:22 - Il Destino È Già Scritto (2017 ITA/ENG) [1080p] [BLUWORLD]
Я искал решение, прочитал много вопросов / ответов и нашел этот ответ , который я реализовал следующим образом
import requests, urllib.request, time, unicodedata, csv
from bs4 import BeautifulSoup
import codecs
response = open('AH.html')
content = response.read()
html = codecs.decode(content, 'utf-8')
soup = BeautifulSoup(html, "html.parser")
Однако он запускает следующую ошибку
Traceback (most recent call last):
File "C:\Users\user\AppData\Local\Programs\Python\Python37-32\lib\encodings\utf_8.py", line 16, in decode
return codecs.utf_8_decode(input, errors, True)
TypeError: a bytes-like object is required, not 'str'
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "C:\Users\user\Desktop\score.py", line 8, in <module>
html = codecs.decode(content, 'utf-8')
TypeError: decoding with 'utf-8' codec failed (TypeError: a bytes-like object is required, not 'str')
Думаю, проблему легко решить, но как это сделать?