|
52 / 52 / 23
Регистрация: 01.06.2015
Сообщений: 189
|
||||||
Правильный парсинг html в Qt01.06.2015, 18:12. Показов 21800. Ответов 54
Метки нет (Все метки)
Здравствуйте.
Необходимо парсить html средствами Qt. Я это делаю следующим образом:
Правильный ли это подход для решение такой задачи? То при закрытии приложения выдает ошибки в окно дебага: LEAK: 5 CachedResource LEAK: 4258 WebCoreNode Которые говорят об утечке памяти. Заранее благодарен.
0
|
||||||
| 01.06.2015, 18:12 | |
|
Ответы с готовыми решениями:
54
Qt парсинг html. Вытащить html код тэга? Html парсинг на примере
|
|
52 / 52 / 23
Регистрация: 01.06.2015
Сообщений: 189
|
||
| 24.06.2015, 17:52 [ТС] | ||
|
0
|
||
|
|
|||||||
| 24.06.2015, 17:54 | |||||||
|
Но у меня указанный мною способ не работает(по крайней мере под Debian), сразу пишет в дебаг что:
0
|
|||||||
|
52 / 52 / 23
Регистрация: 01.06.2015
Сообщений: 189
|
|||||||
| 24.06.2015, 18:00 [ТС] | |||||||
1
|
|||||||
|
267 / 189 / 33
Регистрация: 15.01.2011
Сообщений: 681
|
|||||||
| 24.06.2015, 18:05 | |||||||
|
Krasiosoft,
1
|
|||||||
|
|
|||
| 24.06.2015, 18:08 | |||
|
Добавлено через 54 секунды Вероятно стоит как-то применять такой метод QTextCodec QTextCodec * codecForHtml(const QByteArray & ba, QTextCodec * defaultCodec)
0
|
|||
|
267 / 189 / 33
Регистрация: 15.01.2011
Сообщений: 681
|
|
| 24.06.2015, 18:16 | |
|
0
|
|
|
267 / 189 / 33
Регистрация: 15.01.2011
Сообщений: 681
|
|
| 24.06.2015, 18:19 | |
|
да его использую, пока нравится ), "Тогда чем хуже "чистый" libxml2 ?" - не знаю, это дело вкуса
0
|
|
|
52 / 52 / 23
Регистрация: 01.06.2015
Сообщений: 189
|
||||
| 24.06.2015, 18:55 [ТС] | ||||
|
0
|
||||
|
|
||||||||||||
| 24.06.2015, 19:13 | ||||||||||||
http://www.xmlsoft.org/html/li... arEncoding Добавлено через 15 минут Т.е к примеру для
Есть возможность явно задать кодировку.
0
|
||||||||||||
|
52 / 52 / 23
Регистрация: 01.06.2015
Сообщений: 189
|
|||||||
| 25.06.2015, 22:04 [ТС] | |||||||
|
Еще для правильной работы с парсером нужно понять в какой кодировке поступают данные в функцию:
Сейчас по исходникам libxml2 пытаюсь разобраться как он определяет кодировку. Добавлено через 5 часов 1 минуту Функция htmlCurrentChar берет один символ следующим образом: 1) Проверяет если мы установили в xmlParserCtxt *context значение XML_CHAR_ENCODING_UTF8, тогда пробует брать символ как UTF-8, если удалось, возвращает этот символ. 2) Пробует брать символ как байт и проверяет его, чтоб он был меньше 128, если это так, возвращает это значение как символ. 3) Пробует определить кодировку автоматически с помощью функции htmlFindEncoding и на основе найденной кодировки уже возвращает символ. Функция htmlFindEncoding ищет HTTP-EQUIV, за ним CONTENT и за ним CHARSET=, далее переписывает название кодировки пока: ((*cur >= 'A') && (*cur <= 'Z')) || ((*cur >= 'a') && (*cur <= 'z')) || ((*cur >= '0') && (*cur <= '9')) || (*cur == '-') || (*cur == '_') || (*cur == ':') || (*cur == '/')) Но что самое главное, ищет он проходясь по байтам пока не встретит 0. Выходит не существует кодировки в которой могут быть нулевые байты? Или тег meta с кодировкой должен быть выше нежели текстовая информация? Я видел уже несколько сайтов где тег title идет выше чем указание кодировки. Вот только в каком виде мы получаем символы в LibXml2ReaderPrivate::characters(...), я так и не понял пока.
1
|
|||||||
|
52 / 52 / 23
Регистрация: 01.06.2015
Сообщений: 189
|
||||||
| 26.06.2015, 18:41 [ТС] | ||||||
|
Вроде разобрался, задать кодировку парсеру можно следующим образом:
Но вот саму обвертку LibXml2Reader нужно будет переписать, как минимум чтоб не нужно было перегонять данные html страницы с QByteArray в QString и потом обратно.
0
|
||||||
| 26.06.2015, 21:27 | ||
|
, при этом использует 16 бит на символ.
0
|
||
| 26.06.2015, 21:27 | |
|
Правильный парсинг Period Правильный парсинг на php Правильный парсинг файла
JSON.net, правильный парсинг структуры Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки
Правым кликом по серверу -> отладочная информация -> edit
Заменить "net": "raw", на "net": "tcp",
Нажать кнопку reload.
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|