Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
11 / 11 / 1
Регистрация: 06.12.2011
Сообщений: 170
1

Извлечение данных с веб-страницы в виде XML

28.08.2014, 10:01. Показов 2627. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день!

Необходимо использовать содержимое веб-страницы в приложении.
С чего вообще начать? Как я понял, необходимо написать запрос к странице, он должен выдать XML-файл (сам ли он генерируется, или необходимо написать шаблон?.
Там мы уже с помощью, например, XmlListModel обрабатываем файл.

Вопрос №1: как все таки реализовать данную процедуру, и как это выглядит, пример?
Вопрос №2: Способен ли XmlListMode обрабатывать сложные xml документы? Или же лучше использовать тот же QXmlStreamReader.

Заранее спасибо
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.08.2014, 10:01
Ответы с готовыми решениями:

Извлечение текста из веб-страницы
Доброго времени суток, специалисты VBA. Посоветуйте решение. На листе в ячейку E2 - вписано...

Извлечение данных xml
Доброго... Подскажите пожалуйста как извлечь картинку из XML и отобразить ее. <binary...

Извлечение данных из XML
Здравствуйте, господа форумчане! У меня возникла такая проблема: есть xml файл, мне нужно взять из...

извлечение данных из xml
Такая проблема возникла: есть прога, которая преобразовывает doc и txt файлы в xml в таком виде:...

4
1443 / 1326 / 131
Регистрация: 20.03.2009
Сообщений: 4,689
Записей в блоге: 11
28.08.2014, 10:35 2
Цитата Сообщение от korsarqa Посмотреть сообщение
С чего вообще начать?
С исследованием страницы и написания требований к разрабатываемому компоненту.
0
5158 / 2770 / 465
Регистрация: 05.10.2013
Сообщений: 7,321
Записей в блоге: 147
28.08.2014, 10:35 3
Если я правильно понял, то вы хотите отправлять запрос к серверу и получать от него ответ в виде XML. Если так, то могу кое-чем помочь. Можете потренироваться на этом сервере: http://www.worldweatheronline.... ather.aspx

Это сервер прогноза погоды. Он может выдавать ответы в XML, JSON и CSV. Вот вам примерчик небольшой, как получить ответ от этого сервера и вывести на экран: https://github.com/8Observer8/Qt_WeatherForecast
0
11 / 11 / 1
Регистрация: 06.12.2011
Сообщений: 170
29.08.2014, 11:41  [ТС] 4
Цитата Сообщение от Dmitriy_M Посмотреть сообщение
С исследованием страницы и написания требований к разрабатываемому компоненту.
Мне хотя бы просто для начала простенький пример сделать, чтобы разобраться.
0
5158 / 2770 / 465
Регистрация: 05.10.2013
Сообщений: 7,321
Записей в блоге: 147
29.08.2014, 12:09 5
Вот простой пример. Получаем содержимое html-страницы и выводим на экран:

HTMLContent.pro
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
QT       += core network
 
QT       -= gui
 
QMAKE_CXXFLAGS += -std=c++11
 
TARGET = HTMLContent
CONFIG   += console
CONFIG   -= app_bundle
 
TEMPLATE = app
 
 
SOURCES += main.cpp
 
HEADERS += \
    NetworkManager.h \
    Receiver.h
NetworkManager.h
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#ifndef NETWORKMANAGER_H
#define NETWORKMANAGER_H
 
#include <memory>
#include <string>
#include <QObject>
#include <QString>
#include <QNetworkAccessManager>
#include <QNetworkReply>
#include <QNetworkRequest>
 
class NetworkManager : public QObject
{
    Q_OBJECT
 
public:
 
    NetworkManager( )
    {
        m_manager = std::unique_ptr<QNetworkAccessManager>( new QNetworkAccessManager( this ) );
    }
 
    void fetch( const QString &url )
    {
        // Start fetching
        m_reply.reset( m_manager->get( QNetworkRequest( QUrl( url ) ) ) );
        connect( m_reply.get( ), SIGNAL( finished( ) ),
                 this, SLOT( replyFinished( ) ) );
    }
 
signals:
    void signalWithContent( const QString content );
 
private slots:
    void replyFinished( )
    {
        QByteArray data = m_reply->readAll( );
        QString content( data );
        signalWithContent( content );
    }
 
private:
    std::unique_ptr<QNetworkReply> m_reply;
    std::unique_ptr<QNetworkAccessManager> m_manager;
};
 
#endif // NETWORKMANAGER_H
Receiver.h
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef RECEIVER_H
#define RECEIVER_H
 
#include <QDebug>
 
class Receiver : public QObject
{
    Q_OBJECT
 
public slots:
    void showContent( const QString &content )
    {
        qDebug() << content;
    }
};
 
#endif // RECEIVER_H
main.cpp
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <QCoreApplication>
#include "NetworkManager.h"
#include "Receiver.h"
 
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
 
    NetworkManager manager;
    Receiver receiver;
 
    QObject::connect( &manager, SIGNAL( signalWithContent( QString ) ),
                      &receiver, SLOT( showContent( QString ) ) );
 
    manager.fetch( "http://www.gokgs.com" );
 
    return a.exec();
}
Чтобы не было сообщений такого типа: "QSslSocket: cannot resolve TLSv1_1_client_method" Можно поставить OpenSSL или скачать и положить рядом с exe следующие файлы:
- libeay32.dll
- msvcr90.dll
- ssleay32.dll

Их можно скачать отсюда: https://drive.google.com/folde... sp=sharing
0
29.08.2014, 12:09
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.08.2014, 12:09
Помогаю со студенческими работами здесь

Извлечение данных их XML-файла
Здравствуйте..подскажите каким образом из XML-файла достать строчку и вставить в HTML с помощью JS?...

Извлечение данных из XML-файла
Добрый день, знатоки и профессионалы! Я не особо разбираюсь в коде помогите пожалуйста. Условия...

извлечение данных из xml файла
Доброе время суток. как с помощью linq можно извлечь из xml адрес на файл для дальнейшего его...

Извлечение данных из xml в текстовый файл
Добрый вечер. Есть файл xml. Нужно извлечь данные item_id и item_revision_id, и записать в файл...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru