Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Qt C++ ściąganie wyników Lotto z Lotto.pl

Ostatnio zmodyfikowano 2016-04-14 19:34
Autor Wiadomość
Kefirek
Temat założony przez niniejszego użytkownika
Qt C++ ściąganie wyników Lotto z Lotto.pl
» 2016-04-09 18:12:16
Witam
Pytanie jak w temacie jak pobrać wyniki losowań z Lotto.pl
Wiem,że pytanie jest bardzo ogólne, ale faktycznie nie wiem jak się za to zabrać.
Pozdrawiam
P-147117
Monika90
» 2016-04-09 18:46:29
To zależy od tego czy lotto.pl przewidziało taką możliwość i ma jakieś API do tego, czy też będziesz musiał wyciągać to od nich na siłę.

Jeżeli to pierwsze to przeczytaj dokumentację, a jak drugie to ściągasz stronę do std::stringa i w nim szukasz tego co ci potrzebne.

W przypadku lotto jest to łatwe, to fragment ich strony głównej:

<div class="glowna_wyniki_lotto">
 <div class="wynik_lotto">21 </div>
 <div class="wynik_lotto">23 </div>
 <div class="wynik_lotto">29 </div>
 <div class="wynik_lotto">33 </div>
 <div class="wynik_lotto">34 </div>
 <div class="wynik_lotto">35 </div>
</div>
</div>
Podane jak na tacy.
P-147119
Kefirek
Temat założony przez niniejszego użytkownika
» 2016-04-09 19:08:54
Rzeczywiście wygląda to bardzo prosto jeżeli chodzi o sposób wykonania: wczytanie strony do stringa.
Jednak nie bardzo wiem jak ściągnąć kod strony i to tej właściwej z wynikami.
Przeszukanie stringa nie stanowi problemu.
P-147120
turaz
» 2016-04-09 19:24:37
Do pobrania stronki użyj klasy QNetworkAccessManager dokumentacja: http://doc.qt.io/qt-5​/qnetworkaccessmanager.html

P-147121
Kefirek
Temat założony przez niniejszego użytkownika
» 2016-04-09 19:29:11
Dzięki już zaglądam do doc
P-147122
Kefirek
Temat założony przez niniejszego użytkownika
» 2016-04-10 10:06:33
Witam ponownie

Poniżej zamieszczam kod:

C/C++
//.h
#ifndef BASEUPDATE_H
#define BASEUPDATE_H

#include <QObject>
#include <QWidget>
#include <QtNetwork/QNetworkAccessManager>
#include <QEventLoop>
#include <QNetworkRequest>
#include <QNetworkReply> 

class BaseUpdate
    : public QObject
{
    Q_OBJECT
public:
    explicit BaseUpdate( QObject * parent = 0 );
   
    QNetworkAccessManager * m_networkManager;
   
    void ReadInternetPage();
   
    signals:
   
public slots:
    void onRequestCompleted( QNetworkReply * reply );
};

#endif // BASEUPDATE_H
//.cpp
#include "baseupdate.h"

BaseUpdate::BaseUpdate( QObject * parent )
    : QObject( parent )
{
   
}

void BaseUpdate::ReadInternetPage()
{
    QNetworkRequest request;
    request.setUrl( QUrl( "http://www.lotto.pl/mini-lotto/wyniki-i-wygrane" ) );
   
    m_networkManager = new QNetworkAccessManager( this ); // Instance variable
    connect( m_networkManager, SIGNAL( finished( QNetworkReply * ) ),
    this, SLOT( onRequestCompleted( QNetworkReply * ) ) );
   
    m_networkManager->get( request );
   
}

void BaseUpdate::onRequestCompleted( QNetworkReply * reply )
{
    QByteArray data = reply->readAll();
    qDebug() << data;
}
//class formminilotto.cpp
//.......
pBaseUpdate = new BaseUpdate( this );
pBaseUpdate->ReadInternetPage();
delete pBaseUpdate;
//.......

Program startuje, ale zamiast zawartości strony otrzymuje:

qt.network.ssl: QSslSocket: cannot resolve TLSv1_1_client_method
qt.network.ssl: QSslSocket: cannot resolve TLSv1_2_client_method
qt.network.ssl: QSslSocket: cannot resolve TLSv1_1_server_method
qt.network.ssl: QSslSocket: cannot resolve TLSv1_2_server_method
qt.network.ssl: QSslSocket: cannot resolve SSL_select_next_proto
qt.network.ssl: QSslSocket: cannot resolve SSL_CTX_set_next_proto_select_cb
qt.network.ssl: QSslSocket: cannot resolve SSL_get0_next_proto_negotiated

Pewnie jakiś błąd odczytu?
P-147136
Kefirek
Temat założony przez niniejszego użytkownika
» 2016-04-10 10:25:27
instrukcja:
C/C++
qDebug() << data;
nic nie wyświetla. Wygląda na to, że dane nie zostały zapakowane do "data".
P-147137
j23
» 2016-04-10 10:32:39
To zależy od tego czy lotto.pl przewidziało taką możliwość i ma jakieś API do tego (...)
Ma -> http://www.totalizator.pl/__data/assets/file/0009/43974/za-nr-1,.pdf
P-147138
« 1 » 2
  Strona 1 z 2 Następna strona