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