![]() |
|
|
![]()
|
|
| Lindemann66 |
|
|||
|
Thinking... ![]() Профиль Группа: Участник Сообщений: 117 Регистрация: 2.8.2011 Где: Ульяновск Репутация: нет Всего: нет |
Всем привет!
У меня следующий нетривиальный вопрос: Задача - загрузить из интернета код страницы и осуществить его парсинг, как-то:
Какие средства можно использовать для решения данной проблемы?
Всё бы хорошо, но у QtWebKit есть один большой минус - он производит рендер страницы - для того, чтобы, если сайт типа facebook.com (имеющий исключительно JS-код) - на выходе давать "человеческий" html На эту операцию по рендеру и получению JS -> html тратится достаточно много ресурсов - по сравнению с другими средствами, которые осуществляют парсинг страницы исключительно в виде "как есть" - т.е. пришёл html код - всё ок, пришёл js код (с twitter'а, например) - ну чтож, значит, пропарсить и получить ссылки не удастся Так вот, выходит, что использование QtWebKit обосновано только в том случае, если на сайте преобладает JS-код, AJAX-вставки и т.п. Отсюда вопрос - есть ли какие-то адекватные способы осуществления проверки того, что на старнице присутствует динамический JS-код для показа контента? Знает ли кто-то такие способы? Буду очень признателен за любой ответ! --------------------
stay true |
|||
|
||||
| _GRIN_ |
|
|||
![]() одинокий падаван ![]() ![]() Профиль Группа: Участник Сообщений: 272 Регистрация: 18.11.2007 Где: Калуга Репутация: 6 Всего: 7 |
Lindemann66, ну примерно так:
P.S. - Рендерят виджеты - в частности QWebView ;) Это сообщение отредактировал(а) _GRIN_ - 26.10.2011, 08:43 -------------------- Дорогу осилит идущий |
|||
|
||||
| Lindemann66 |
|
|||
|
Thinking... ![]() Профиль Группа: Участник Сообщений: 117 Регистрация: 2.8.2011 Где: Ульяновск Репутация: нет Всего: нет |
SIGNAL(loadFinished(bool) сработает, когда загрузится страница, при этом асинхронно-подгружаемые элементы (картинки, AJAX и т.д.) всё ещё будут подгружаться
Получится, что часть контента не загрузится, и мы не сможем её обработать --------------------
stay true |
|||
|
||||
| _GRIN_ |
|
|||
![]() одинокий падаван ![]() ![]() Профиль Группа: Участник Сообщений: 272 Регистрация: 18.11.2007 Где: Калуга Репутация: 6 Всего: 7 |
Lindemann66, я в свое время писал бота для тивттера - проблемы с тем, что у меня страница не догрузилась в момент прихода сигнала loadFinished(true) - не было. Ты уверен в своих словах?
-------------------- Дорогу осилит идущий |
|||
|
||||
| Lindemann66 |
|
|||
|
Thinking... ![]() Профиль Группа: Участник Сообщений: 117 Регистрация: 2.8.2011 Где: Ульяновск Репутация: нет Всего: нет |
Ну, в документации об этом написано...
--------------------
stay true |
|||
|
||||
| _GRIN_ |
|
||||||
![]() одинокий падаван ![]() ![]() Профиль Группа: Участник Сообщений: 272 Регистрация: 18.11.2007 Где: Калуга Репутация: 6 Всего: 7 |
Lindemann66, нда, действитель =)
Давай по порядку:
Решение указано выше
Рендер производится в виджете QWebView - можно использовать QWebPage (QWebView его использует) - что бы уйти от рендера.
Данный код возвращает исходный код загрузенной страницы - включая скрипты. Парси его на здоровь "как есть". Или я не до конца понял твой вопрос, или ты не до конца понял мой ответ, или ... =) Это сообщение отредактировал(а) _GRIN_ - 26.10.2011, 12:27 -------------------- Дорогу осилит идущий |
||||||
|
|||||||
![]()
|
| Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |