Парсер HTML файла |
Здравствуйте, гость ( Вход | Регистрация )
Парсер HTML файла |
++Norton++ |
21.11.2009, 1:02
Сообщение
#1
|
Студент Группа: Участник Сообщений: 98 Регистрация: 5.10.2008 Пользователь №: 380 Спасибо сказали: 0 раз(а) Репутация: 1 |
Есть куча файлов html. Из этих файлов ничего не надо, кроме того что стоит в тегах href с одинаково начинающимся адресом. Т.е. html документ имеет примерно такой вид:
Собственно нужно спарсить текст (хотя бы в QString) находящийся на месте "ТекстДляПарсинга" и то, что за ним, т.е. 1234. Подскажите, как это лучше всего будет сделать? Просто никогда раньше парсеры не приходилось писать. Заранее спасибо! |
|
|
Litkevich Yuriy |
21.11.2009, 1:06
Сообщение
#2
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
++Norton++ |
21.11.2009, 1:13
Сообщение
#3
|
Студент Группа: Участник Сообщений: 98 Регистрация: 5.10.2008 Пользователь №: 380 Спасибо сказали: 0 раз(а) Репутация: 1 |
Именно так, длинный HTML-документ с этими нужными ссылками
Насчет QtXML, если можно поподробнее... какой именно класс? Просто капнул документацию, а их там огромное множество... |
|
|
Litkevich Yuriy |
21.11.2009, 1:19
Сообщение
#4
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
Есть Несколько технологий:
SAX и DOM - руководство полностью переведено. Есть ещё XQuery и XPath, возможно, для этой задачи могут быть удобнее, но только на английском |
|
|
kwisp |
21.11.2009, 1:39
Сообщение
#5
|
астарожна ынтжинэр Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: 23 |
по-моему не получится потому что хмл очень тебователен к закрывающим тегам... можно не загрузить документ...
наверное регехпом можно попробовать. |
|
|
lioncub |
21.11.2009, 10:35
Сообщение
#6
|
Студент Группа: Участник Сообщений: 28 Регистрация: 10.11.2009 Пользователь №: 1220 Спасибо сказали: 3 раз(а) Репутация: 0 |
kwisp, точно, все что меджду > < от body и не включая scripts
|
|
|
++Norton++ |
21.11.2009, 12:57
Сообщение
#7
|
Студент Группа: Участник Сообщений: 98 Регистрация: 5.10.2008 Пользователь №: 380 Спасибо сказали: 0 раз(а) Репутация: 1 |
Спасибо, буду думать во всех направлениях, насчет регехпа думал, но так и не додумался как его применить в данном случае...
Может быть есть какие-нибудь догадки? |
|
|
rcdimon |
21.11.2009, 13:58
Сообщение
#8
|
Студент Группа: Участник Сообщений: 69 Регистрация: 27.10.2009 Пользователь №: 1183 Спасибо сказали: 1 раз(а) Репутация: 0 |
Цитата Собственно нужно спарсить текст (хотя бы в QString) находящийся на месте "ТекстДляПарсинга" и то, что за ним, т.е. 1234. Подскажите, как это лучше всего будет сделать? Просто никогда раньше парсеры не приходилось писать. Немного не корректно поставлена задача. Как я понимаю "ТекстДляПарсинга" является текстом ссылки. То есть надо вынимать тексты ыылок. А что значит "и то, что за ним, т.е. 1234" я не понял. Но могу привести регулярку для работы со ссылками например. Я такие вещи делал на Perl. Регулярка для извлечения URL из ссылки и текста ссылки может быть типа такой <a.+href.*=.*"(.+?)">(.+?)</a.*> |
|
|
kwisp |
21.11.2009, 13:59
Сообщение
#9
|
астарожна ынтжинэр Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: 23 |
насчет регехпа думал, но так и не додумался как его применить в данном случае... как вариант. читаешь файл в QString. далее тебе нужен такой regexp чтобы -- искал href=" пропускал все до ">"какой то текст"<"далее текст до открывающего тега(<bla>) какой то текст(<\bla>) 1. сказу надо учесть что в имени ссылки могут быть символы >,< 2. с помощью cap(int) вырезаешь все что нужно. скинешь примеры файлов можно конкретные "примеры" выражения подобрать. |
|
|
molchanoviv |
21.11.2009, 19:06
Сообщение
#10
|
Старейший участник Группа: Сомодератор Сообщений: 597 Регистрация: 18.7.2008 Из: Саратов Пользователь №: 238 Спасибо сказали: 41 раз(а) Репутация: 5 |
|
|
|
Текстовая версия | Сейчас: 28.12.2024, 4:26 |