Форум сайта python.su
1
Программа получилась такая:
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)
Офлайн
568
А пути случайно не в кириллице? В винде есть известная проблема с чтением файлов, если в адресе файла есть национальные символы.
Офлайн
1
FishHook
'''
А пути случайно не в кириллице? В винде есть известная проблема с чтением файлов, если в адресе файла есть национальные символы.
'''
Путей нет вообще, для тестовой отладке все в одной пвпке без путей, программа видит
файл и парсит его, но на выходе иногда кракозябры, но как правило все нормально.
Я логику понять не могу. Почему файлы в одной и той- же кодировке то читает, то не читает.
Полтергейст прямо какой- то…
Офлайн
1
FishHook
При чем, что характерно, latin-1 читает всегда нормально
Вот пример:
Ð\x9fÑ\x80оекÑ\x86иÑ\x8f повеÑ\x80Ñ\x85ноÑ\x81Ñ\x82и 4 оÑ\x81и - ноÑ\x80малÑ\x8c к STL модели', 'Ð\x9eпÑ\x83бликовано
STL прочиталось нормально…
Офлайн
568
_nemo_У вас может быть кириллица в путях к стрипту, например, в имени пользователя, винда на этом месте (ну или питон в винде) тупит, когда получает доступ к файлу c:\users\вася иванов\питон\test, поэтому не нужно создавать таких путей, когда вы работаете с питоном в винде (да и вообще не нужно).
Путей нет вообще
Отредактировано FishHook (Янв. 3, 2017 18:57:53)
Офлайн
568
И, кстати, а такая версия питона?
И вот здесь вместо юникода попробуйте указать вашу кодировку
print(etree.tostring(page.getroot(),pretty_print=True,method='html',encoding='utf-8'))
Офлайн
1
FishHook
'''
У вас может быть кириллица в путях к стрипту
'''
пути нормальные, без кириллицы
'''
encoding='utf-8'
'''
пробовал уже, не помогает
Офлайн
1
Проблемы только с эти файлом
Прикреплённый файлы:
test4.html (282,3 KБ)
Офлайн
1
версия питона 3.4
Офлайн
1
Разобрался.
В том файле, который не парсился, не закрыт тэг head, соответтвенно не считывалась
metadata с кодировкой файла.
Офлайн