from lxml import etree # str name_html_file Имя HTML файла # bool adm_mode = True Режим системного администрирования, выводится на экран только файл # bool adm_mode = False Пользовательский режим, выводится на экран только переменные # str tag_parser Тэг поиска в HTML файле, для text label должен быть '//a' # str begin_reader Контрольная строка, с которой начинается запись массива. В массив не включается # str end_reader Контрольная строка, которой заканчивается запись массива. В массив не включается name_html_file = 'test4.html' adm_mode = False tag_parser = '//a' # тэг для поиска, в данном случае <a> print(name_html_file) parser = etree.HTMLParser(remove_blank_text=True) # Задаем параметры парсера page = etree.parse(name_html_file, parser) # Считываем файл в переменную page if adm_mode == True: print('doc.encoding: ' + page.docinfo.encoding) print(etree.tostring(page.getroot(),pretty_print=True,method='html',encoding='unicode')) # Распечатываем переменную page if adm_mode == False: ft = etree.XPath(tag_parser) st = [] for t in ft(page): if t.text != None: if t.text != ' ': if t.text.find('\t') == -1: t.text = t.text.replace('\r','') t.text = t.text.replace('\n','') t.text = t.text.replace(' ',' ') t.text = t.text.replace(' ',' ') t.text = t.text.strip() st.append(t.text) print(st)
Ищет тэги <a> в html.
Проблема вот в чем: некоторые файлы не удается отпарсить, несмотря на кодировку
исходников ‘utf-8’. Таких файлов немного, точнее один попался из нескольких десятков.
Выдает вот такие кракозябры:
'Ð\x9fеÑ\x80ейÑ\x82и к Ñ\x81одеÑ\x80жимомÑ\x83'
Вопрос: почему некоторые файлы в кодировке ‘utf-8’ читаются нормально, а некоторые нет?