IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Moteurs Web Discussion :

Comment lire les fichiers JS d'une page c?


Sujet :

Moteurs Web

  1. #1
    Membre du Club Avatar de GoldenEyes
    Inscrit en
    Avril 2008
    Messages
    197
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 197
    Points : 50
    Points
    50
    Par défaut Comment lire les fichiers JS d'une page c?
    Salut,

    L’utilisation de QtWebKit nous permet de charger toute la page web (avec des CSS ou Javascript inclus ...)
    voila mon code qui permet de charger une page web :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    #include <webkit.h>
     
     Webkit::Webkit(const char * l) 
    {
      m_link=l;
    }
     
    void Webkit::run(QApplication * app)
    {
      std::cout << m_link << std::endl; 
      QUrl url(m_link);
      QObject::connect(&v, SIGNAL(loadProgress(int)), this, SLOT(loadProgress(int)));  
      QObject::connect(&v, SIGNAL(loadFinished(bool)), this, SLOT(loadFinished(bool)));
      QObject::connect(&v, SIGNAL(loadFinished(bool)), this, SLOT(applyscript()));
      v.load(url);
      v.show(); // v est de type WebView
      app -> exec ();  
    }
     
    void Webkit::load(QString s)
    {
      v.page()->mainFrame()->load(s);
    }
     
    void Webkit::loadProgress(int progress)
     {
       printf("Loading page: %d%%   \r",progress);
       fflush(stdout);
     }
     
    void Webkit::loadFinished(bool ok) {
     
      if (!ok){
              printf("failed laodin page ");
                fflush(stdout);
             }
     
     QString frameText =v.page()->mainFrame()->toHtml();       
     
    }
    Je veux savoir Comment je peux accéder aux fichiers (.css et .js) pour récupérer leurs codes avec Qt4 ??

    Quelles sont les classes qui me permettent de faire ça. ??

    Merci pour tout aide.

  2. #2
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    c'est info devrait être quelque part dans QWebFrame... J'ai pas trouvé.

    Sinon tu pourrais chercher l'url des .css et .js et les télécharger avec qnetworkaccessmanager
    http://qt.developpez.com/doc/latest/...ssmanager.html

  3. #3
    Membre du Club Avatar de GoldenEyes
    Inscrit en
    Avril 2008
    Messages
    197
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 197
    Points : 50
    Points
    50
    Par défaut
    Citation Envoyé par Mongaulois Voir le message
    c'est info devrait être quelque part dans QWebFrame... J'ai pas trouvé.

    Sinon tu pourrais chercher l'url des .css et .js et les télécharger avec qnetworkaccessmanager
    http://qt.developpez.com/doc/latest/...ssmanager.html
    merci pour la reponse ,
    j'ai utilisé NetworkAccessManager()et j'ai eu le contenu d'un fichier (.css ou .js ) , voila mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    void Dom::run(QApplication * app)
    {
     
     QUrl urll("http://www.tf1.fr/css/0,,1,00.css?v=5dc8832d5ed79940f8864ee145296c8f");//c'est l'url de fichier .css
     page.mainFrame()->load(urll);
     page.networkAccessManager()->get(QNetworkRequest(urll));
     QNetworkReply *reply =  page.networkAccessManager()->get(QNetworkRequest(urll));
     app->connect(reply, SIGNAL(finished()), SLOT(quit()));
     app -> exec ();  
     qDebug() << "page css : "<<reply->readAll();
    }
    mais je veux avoir le resultat sans utiliser app->connect(reply, SIGNAL(finished()), SLOT(quit())) ??
    par ce que je veux mettre ce code dans une fonction qui ne contient pas (QApplication * app) comme paramettre,je ne sais pas
    si c'est possible ? vous pouvez m'aider?

    merci pour tout aide ,

  4. #4
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Citation Envoyé par GoldenEyes Voir le message
    par ce que je veux mettre ce code dans une fonction qui ne contient pas (QApplication * app) comme paramettre,je ne sais pas
    si c'est possible ? vous pouvez m'aider?

    merci pour tout aide ,
    ??? a quoi te sert app ici????

  5. #5
    Membre du Club Avatar de GoldenEyes
    Inscrit en
    Avril 2008
    Messages
    197
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 197
    Points : 50
    Points
    50
    Par défaut
    Citation Envoyé par Mongaulois Voir le message
    ??? a quoi te sert app ici????
    salut ,
    si je n'utilse pas app comme ce ci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     connect(reply, SIGNAL(finished()),this, SLOT(quit()));
    il n'affiche rien,
    mais si je fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    connect(reply, SIGNAL(finished()),app, SLOT(quit()));
    j'aurai le resultat , je veux enlever app mais comment je doit le faire ??

    merci pour tout aide

  6. #6
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    si Dom hérite d'un class QT normalement rien. Il pssède déja cette fonction.
    SInon connect est une fonction static
    http://qt.developpez.com/doc/latest/...t.html#connect

    donc tu peut faire
    QObject::connect(....)

  7. #7
    Membre du Club Avatar de GoldenEyes
    Inscrit en
    Avril 2008
    Messages
    197
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 197
    Points : 50
    Points
    50
    Par défaut
    Citation Envoyé par Mongaulois Voir le message
    si Dom hérite d'un class QT normalement rien. Il pssède déja cette fonction.
    SInon connect est une fonction static
    http://qt.developpez.com/doc/latest/...t.html#connect

    donc tu peut faire
    QObject::connect(....)
    salut Mongaulois ,
    j'ai fait l'extractions de toutes les liens de la page web charger et je les ai mis dans un le vecteur j'ai appelé lien_css ,
    mais pour extraire le contenue j'ai toujour ce probleme "Erreur de segmentation (core dumped)"
    voila mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    void Dom::Charger_fichier()
    {
     
    lien_css  =dataScript->getData();
    int j;
    for (j=0;j<lien_css.size();j++){
    qDebug()<< "liens css: " << lien_css[j];
    QUrl urll(lien_css[j]); 
    page.mainFrame()->load(urll);
    page.networkAccessManager()->get(QNetworkRequest(urll));
    reply =  page.networkAccessManager()->get(QNetworkRequest(urll));// QNetworkReply *reply ;
    QObject::connect(reply, SIGNAL(finished()), this, SLOT(slotReadyRead()));
                                    }//fin for 
     
    }
     
    void Dom::slotReadyRead()
    {qDebug() << "le contenu de la page css"<<reply->readAll();}
    j'arriverai pas a regler ce probleme ??,vous pouvez m'aider
    merci pour tout aide ,

  8. #8
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Bonjour.
    déjà
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    page.networkAccessManager()->get(QNetworkRequest(urll));
    reply =  page.networkAccessManager()->get(QNetworkRequest(urll));
    tu lance deux fois la récupération de ton fichier...

    Sinon, ou as tu le seg fault?

  9. #9
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    As tu reussi à créé ton dom avec autre chose que tidy??
    SI oui, peut tu nous montrer comment?

  10. #10
    Membre du Club Avatar de GoldenEyes
    Inscrit en
    Avril 2008
    Messages
    197
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 197
    Points : 50
    Points
    50
    Par défaut
    Citation Envoyé par Mongaulois Voir le message
    As tu reussi à créé ton dom avec autre chose que tidy??
    SI oui, peut tu nous montrer comment?
    salut ,

    j'ai pas crée encores l'arbre dom avec un script, mais j'ai utliser addToJavaScriptWindowObject et evaluateJavaScript pour appliquer un script a la page charger (par exemple tous les url de la page ) sans quelle soit la page valide (par contre mon ancienne application ou j'ai utiliser QtXml et les classes de Dom ne donne pas tous les url d'une page avant quelle soit valide) donc je peux normalement cree l'arbre dom sans quelle soit valide
    mais je n'ai pas encore fait ,
    voila mon code ou j'ai utliser un script pour extraire les liens des .css :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    void Dom::applyscript()
    {
     
    QString output= "var anchorList = document.getElementsByTagName(\"link\") ;"
      "for (var i = 0; i < anchorList.length ; i++)"
                      "{"
                      "linkCssOutput.setLink(anchorList[i].href);"
    "}";//c'est un script qui donne tous les liens des .css
     
              QWebFrame*  f = v.page()->mainFrame();
     
    	if (!dataScript) {
    		dataScript = new ApplyScript();
     
    		f->addToJavaScriptWindowObject("linkCssOutput", dataScript);
                           	}
     
     
    	QVariant vr = f->evaluateJavaScript(output);
           lien_css  =dataScript->getData();
           qDebug()<< "liens css : " << lien_css;             
    }
    void ApplyScript::setLink(const QString & data) 
     
    {   
     
            m_data.push_back(data) ;  
           qDebug()<< "set data: " << data;
     
    }
    QVector <QString>  & ApplyScript::getLink( ) 
    { 
            int j;
    	for (j=0;j<m_data.size();j++){
    	qDebug()<< "get: " << m_data[j];
           }
    	return m_data;
     
    }
    je veux charger le contenu des link_css mais j'ai toujour le probleme de slot ??

    merci pour tout aide,

  11. #11
    Membre du Club Avatar de GoldenEyes
    Inscrit en
    Avril 2008
    Messages
    197
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 197
    Points : 50
    Points
    50
    Par défaut
    salut ,
    j'ai changer la declaration de reply je l'ai declaré public au lieu de private . et maintenant j'ai ce message d'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Object::connect: No such slot QNetworkReplyImpl::slotReadyRead()
    ?

  12. #12
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    peut tu mettre le .h de QNetworkReplyImpl?
    tu n'as pas repondu. Ou as tu le seg fault?

  13. #13
    Membre du Club Avatar de GoldenEyes
    Inscrit en
    Avril 2008
    Messages
    197
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 197
    Points : 50
    Points
    50
    Par défaut
    Citation Envoyé par Mongaulois Voir le message
    peut tu mettre le .h de QNetworkReplyImpl?
    tu n'as pas repondu. Ou as tu le seg fault?
    lorsque j'ai changer la declaré reply coome variable public j'aurai pas l'erreur seg fault ,
    voila mon code dom.h :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    #ifndef MAINWINDOW_H
    #define MAINWINDOW_H
     
    #include <QtGui>
    #include <QtWebKit>
    #include <QtXml>
    #include <QFile>
    #include <QFileDialog>
    #include <QIODevice>
    #include <QApplication>
    #include <QtCore>
    #include <QString>
    #include <QDialog>
    #include <QtDebug>
    #include <QWebPage>
    #include <QWebFrame>
    #include <QVariant>
    #include <QWebView>
    #include <QCoreApplication>
    #include <QtNetwork/QNetworkAccessManager>
    #include <QtNetwork/QNetworkReply>
     #include <QtNetwork/QNetworkRequest>
    #include <QtNetwork>
    #include <iostream>
    QT_BEGIN_NAMESPACE
    class ApplyScript;
    class Dom : public QObject
    {
    Q_OBJECT
    public:
     
          Dom(const char *l);
          void run(QApplication * app); 
     
          void load(QString s);
          QWebPage page;
           QNetworkReply *reply ;
    public slots:
          void loadFinished(bool ok);         
          void loadProgress(int progress) ;
          void applyscript();
          void connectFrame(QWebFrame * frame);
          void Charger_fichier();
           QNetworkReply * slotReadyRead();
    private:
         QVector <QString> lien_css ;
         QVector <QString> lien_js ;
         ApplyScript* dataScript;     
         QProcess *process;
         QWebFrame* f ;   
         const char * m_link;    
         QApplication * app;
         QWebView v;
     
     
    };
     
    class ApplyScript: public QObject 
    {
    Q_OBJECT
    public :
     
    QVector <QString>  & getLink( );
     
    public slots:
    	void setLink( const QString & data);
     
    private :
    QVector <QString>    m_data;
    int i;
     
    };
     
     
    #endif

    dom.cpp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
     
    #include <dom.h>
     
     Dom::Dom(const char * l) 
    {
      m_link=l;
    }
     
    void Dom::run(QApplication * app)
    {
      std::cout << m_link << std::endl; 
      QUrl url(m_link);
      connect(&v, SIGNAL(loadProgress(int)), this, SLOT(loadProgress(int)));  
      QObject::connect(&v, SIGNAL(loadFinished(bool)), this, SLOT(loadFinished(bool)));      
     connect(&v, SIGNAL(loadFinished(bool)), this, SLOT(applyscript()));
     connect(&v, SIGNAL(loadFinished(bool)), this, SLOT(Charger_fichier()));
      v.load(url);
     v.show();
     app -> exec ();
     
     
    }
    void Dom::connectFrame(QWebFrame *f)
    {
        connect(f, SIGNAL(javaScriptWindowObjectCleared()),
                this, SLOT(applyscript()));
    }
     
    void Dom::load(QString s)
    {
      v.page()->mainFrame()->load(s);
     
    }
     
    void Dom::loadProgress(int progress)
     {
       printf("Loading page: %d%%   \r",progress);
       fflush(stdout);
     }
     
    void Dom::loadFinished(bool ok) {
     
      if (!ok){
              printf("failed laodin page ");
            	fflush(stdout);
             }
     
     QString frameText =v.page()->mainFrame()->toHtml();       
     
    }
     
    void Dom::applyscript()
    {
     
    QString output= "var anchorList = document.getElementsByTagName(\"link\") ;"
      "for (var i = 0; i < anchorList.length ; i++)"
                      "{"
                      "linkCssOutput.setLink(anchorList[i].href);"
    "}";
     
     
              QWebFrame*  f = v.page()->mainFrame();
     
    	if (!dataScript) {
    		dataScript = new ApplyScript();
     
    		f->addToJavaScriptWindowObject("linkCssOutput", dataScript);
                           	}
     
     
    	QVariant vr = f->evaluateJavaScript(output);
           lien_css  =dataScript->getLink();
           qDebug()<< "get dans dommm : " << lien_css;             
     
     // app->quit();             
    }
    void Dom::Charger_fichier()
    {
    lien_css  =dataScript->getLink();
    int j;
    	for (j=0;j<lien_css.size();j++){
    	qDebug()<< "liens cssssss: " << lien_css[j];
    QUrl urll(lien_css[j]); 
    page.mainFrame()->load(urll);
    page.networkAccessManager()->get(QNetworkRequest(urll));
    reply =  page.networkAccessManager()->get(QNetworkRequest(urll));
    QObject::connect(reply, SIGNAL(finished()), reply, SLOT(slotReadyRead()));
     
                                          }
    }
     QNetworkReply* Dom::slotReadyRead()
    {qDebug() << "le contenus de la page css"<<reply->readAll(); return reply;}
     
    void ApplyScript::setLink(const QString & data) 
     
    {   
     
            m_data.push_back(data) ;  
           qDebug()<< "set data: " << data;
     
    }
    QVector <QString>  & ApplyScript::getLink( ) 
    { 
            int j;
    	for (j=0;j<m_data.size();j++){
    	qDebug()<< "get: " << m_data[j];
           }
    	return m_data;
     
    }
    le main.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
     
     #include <QApplication>
    #include <QtCore>
    #include "dom.h"
     
    char         * alink = "none";
    quint32        max   = 10;
    quint32        port  = 9876;
     
    void usage(FILE * fd) 
      {
        fprintf(fd,
                "Usage: ./UritoArbreDom [OPTION]\n"
                "Options:\n"
                "\t-l, --link <link>    : link string\n"
                "\n"
                "commande could be:\n"
                "\t ./domm -l <a href="http://www.google.com" target="_blank">http://www.google.com</a> \n"
                "\n"
                );
        exit(1);
      }
     
    void parseArgs (int argc, char **argv)
    {
      for(int i = 1; i < argc; ++i) 
      { 
        //Long style arguments
        if(! strcmp(argv[i],"--link") || ! strcmp(argv[i],"-l")) 
          {
            if(i + 1>= argc) 
              usage(stderr);
     
            alink = argv[++ i];
          } 
          else 
            {
              qCritical () << ">> unknown option: " << argv[i] << "\n";
              usage(stderr);
            }
      } 
     
    }
     
    int main( int argc, char **argv )
    {
      QApplication app(argc,argv);
      // parse command line arguments
      parseArgs(argc, argv);
     
       Dom dom (alink);
     
      dom . run(& app);
     
      return 1;
     
      return app . exec();
     
    }
    executution ce fait par la commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     ./dom -l http://www.tf1.fr
    il va afficher les url des fichier .css mais pour le contenu j'ai cette erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Object::connect: No such slot QNetworkReplyImpl::slotReadyRead()
    ?
    merci pour tout aide ,

  14. #14
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    c'est le bordel ton code...
    Pourquoi tu fait app->exec() dans ta fonction run!!!!!!
    pourquoi tu met un return 1 avec return app.exec()!!!!!


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    QObject::connect(reply, SIGNAL(finished()), reply, SLOT(slotReadyRead()));
    tu connect le signal et le slot sur le même objet!!!!!!

    Pour ce qui est du seg fault, ca ne viens surement pas du fait que tu ai changé ta variable de private en public

  15. #15
    Membre du Club Avatar de GoldenEyes
    Inscrit en
    Avril 2008
    Messages
    197
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 197
    Points : 50
    Points
    50
    Par défaut
    Citation Envoyé par Mongaulois Voir le message
    c'est le bordel ton code...
    Pourquoi tu fait app->exec() dans ta fonction run!!!!!!
    pourquoi tu met un return 1 avec return app.exec()!!!!!


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    QObject::connect(reply, SIGNAL(finished()), reply, SLOT(slotReadyRead()));
    tu connect le signal et le slot sur le même objet!!!!!!

    Pour ce qui est du seg fault, ca ne viens surement pas du fait que tu ai changé ta variable de private en public
    merci Mongaulois ,

    j'ai enlevé de main()
    et j'ai fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     QObject::connect(reply, SIGNAL(finished()),this, SLOT(slotReadyRead()));
    et ca marche bien mais il m'affiche le contenu que de dernier url ? c'est par ce que le slot est executé jusqu'a la fin de boucle c'est lorsque le signal est finished ?
    donc j'aurai toujour que le dernier contenu meme si j'ai fait l'appel dans une boucle ?si c'est le cas je doit faire des changement ?

    merci pour tout aide ,

  16. #16
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Citation Envoyé par GoldenEyes Voir le message
    merci Mongaulois ,

    j'ai enlevé de main()
    C'était le contraire qu'il fallait faire

    Citation Envoyé par GoldenEyes Voir le message
    mais il m'affiche le contenu que de dernier url ? c'est par ce que le slot est executé jusqu'a la fin de boucle c'est lorsque le signal est finished ?
    donc j'aurai toujour que le dernier contenu meme si j'ai fait l'appel dans une boucle ?si c'est le cas je doit faire des changement ?

    merci pour tout aide ,
    Normale tu ne que sur un seul QNetworkReply...
    http://qt.developpez.com/doc/latest/...r.html#details

  17. #17
    Membre du Club Avatar de GoldenEyes
    Inscrit en
    Avril 2008
    Messages
    197
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 197
    Points : 50
    Points
    50
    Par défaut
    merci pour la réponse ,

    je vais documenter plus sur QNetWork ,
    merci pour tout aide ,

  18. #18
    Membre du Club Avatar de GoldenEyes
    Inscrit en
    Avril 2008
    Messages
    197
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 197
    Points : 50
    Points
    50
    Par défaut
    salut ,
    j'ai toujour le probleme d'affichage des contenues des liens css
    j'ai utiliser processEvents et toujour il m'affiche que le dernier contenue de lien css
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    void Webkit::Charger_fichier()
    {
    lien_css  =dataScript->getLink();
    int j;
    for (j=0;j<lien_css.size();j++){
     
    qDebug()<< "liens cssssss: " << lien_css[j];
    QUrl urll(lien_css[j]); 
    QNetworkAccessManager *manager = new QNetworkAccessManager(this);
    QNetworkRequest request;
    request.setUrl(urll);
    reply = manager->get(request);
    connect(reply, SIGNAL(finished()),this, SLOT(slotReadyRead()));    
                                         }
    }
     
     
    void  Webkit::slotReadyRead()
    {
      QByteArray result =reply->readAll();
     app->processEvents();
    qDebug() << "le contenus de la page css"<<result ;}
    vous pouvez m'aider , a ce que il faut que j'utilise les thread ou c'est faisable sans les utiliser ,?
    merci pour tou aide ,

  19. #19
    Membre du Club Avatar de GoldenEyes
    Inscrit en
    Avril 2008
    Messages
    197
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 197
    Points : 50
    Points
    50
    Par défaut
    salut ,,

    c'est bon j'ai fait la recuperation de tous les fichiers css , ma faute c'est que j'ai fait ecraser reply a chaque iteration de la boucle ,j'ai pas fait attention de tout ,
    j'ai modifier mon code pour couriger ce bug , et j'ai utiliser processEvents et j'ai eu tous les fichiers ,

    merci pour tout aide ,

  20. #20
    Membre du Club Avatar de GoldenEyes
    Inscrit en
    Avril 2008
    Messages
    197
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 197
    Points : 50
    Points
    50
    Par défaut
    salut ,

    apres la recuperation du contenu de tous les fichiers css et js dans un QString.

    je veux parcourir les .js sans sauvegarder leurs contenues dans un fichier (je veux rien mettre dans mon disque )
    et puis extraire quelques informations par exemple tout le contenu de <a href =....>,
    voila une partie d'un fichier .js

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if(tdp1){tdp1.innerHTML='<img src=\"http://log.tf1.fr/img/log/shoppingBox.gif?CON_ID='+lstBoutiquePremium[lstShop[refreshShopping_i][1]][0]+'&RUB_ID='+ rubId+'&UNV_ID='+unv_id+'&PARAM=\" align=\"top\">';}
    if(tdp2){tdp2.innerHTML='<a href=\"http://www.tf1.fr/src/transactions/genereClickURL.php?pURL='+lstBoutiquePremium[lstShop[refreshShopping_i][1]][5]+'&tag='+lstBoutiquePremium[lstShop[refreshShopping_i][1]][6]+'\" target=\"_blank\" class=\"'+styleTitre+'\">'+lstBoutiquePremium[lstShop[refreshShopping_i][1]][1]+'</a>';}
    if(tdp3){tdp3.innerHTML='<a href=\"http://www.tf1.fr/src/transactions/genereClickURL.php?pURL='+lstBoutiquePremium[lstShop[refreshShopping_i][1]][5]+'&tag='+lstBoutiquePremium[lstShop[refreshShopping_i][1]][6]+'\" target=\"_blank\" class=\"'+styleTexte+'\">'+lstBoutiquePremium[lstShop[refreshShopping_i][1]][4]+'</a>';}}}
    je veux extraire de cette partie le href de <a> et src de <img> ,
    Svp je doit utiliser quelles classes de Qt pour parser le contenu des fichiers js? est ce vous pouvez me donner des points pour commencer.

    merci pour tout aide,

Discussions similaires

  1. Comment lire les attributs "hide" d'une table en VBA
    Par fredlefou dans le forum Access
    Réponses: 1
    Dernier message: 28/01/2008, 01h30
  2. Lire les fichiers copiés d'une base de données
    Par zaac01 dans le forum Installation
    Réponses: 5
    Dernier message: 18/11/2007, 16h30
  3. Comment lire les fichiers dont l'extension est .tex ?
    Par condor_01 dans le forum Ubuntu
    Réponses: 3
    Dernier message: 19/10/2007, 16h24
  4. Réponses: 3
    Dernier message: 12/07/2007, 18h10
  5. Réponses: 3
    Dernier message: 19/02/2007, 23h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo