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

Discussion :

Lire le code d'une page web

  1. #1
    Invité
    Invité(e)
    Par défaut Lire le code d'une page web
    Bonjour,
    Je souhaiterai trouver le moyen d'ouvrir une url et de pouvoir en lire le code source comme dans un QFile ou un QString, afin de pouvoir repérer des mots-clés dans le code (du style "<a href=" par exemple) pour ensuite récupérer certaines informations depuis ce code (dans la continuité, ce serait ici l'adresse du lien qu'il serait intéréssant de récupérer). J'ai trouvé un exemple avec le code du "WebBrowser" fourni en démonstration dans Qt 4.5.0, mais impossible de comprendre le bout de code qui permet l'affichage de la fenêtre "Source Code"...
    Merci par avance pour votre aide

  2. #2
    Membre expérimenté
    Avatar de FloMo
    Homme Profil pro
    Freelance iOS
    Inscrit en
    Juillet 2004
    Messages
    726
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Freelance iOS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 726
    Points : 1 511
    Points
    1 511
    Par défaut
    Il faut utiliser QHttp et un QIODevice branché sur un QTextStream par exemple qui permet de voir défiler le code HTML au fur et à mesure.

    A la limite, pour du HTML, ça peut être analysé en implémentant un QXmlSimpleReader.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Alors, j'ai essayé, et il s'avère que ça ne fonctionne pas pour les fichiers .php et .html (donc ceux qui m'intéressent), par contre ça fonctionne pour les autres fichiers (.doc et .txt par exemple). Où est l'erreur??
    Mon code (très largement inspiré du code utilisé dans l'exemple "HTTP Example"... :p d'ailleurs, certaines étapes sont tout à fait inutiles puisque je met directement l'URL à aller chercher dans le constructeur du QUrl url):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    QUrl url("http://127.0.0.1/Site/index.html");
    QHttp *http = new QHttp(this);
    QFile *file = new QFile("index.php");
    QHttp::ConnectionMode mode = url.scheme().toLower() == "https" ? QHttp::ConnectionModeHttps : QHttp::ConnectionModeHttp;
    http->setHost(url.host(), mode, url.port() == -1 ? 0 : url.port());
     
    if (!url.userName().isEmpty())
         http->setUser(url.userName(), url.password());
     
    QByteArray path = QUrl::toPercentEncoding(url.path(), "!$&'()*+,;=:@/");
    if (path.isEmpty())
         path = "/";
    http->get(path, file);
    Merci pour votre 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
    es ce que tu ferme bien ton QFile une fois le téléchargement terminé?

  5. #5
    Invité
    Invité(e)
    Par défaut
    Oui, le fichier est fermé à la fin du code. Mais ça ne fonctionne que pour les fichiers différents des html et php, pourquoi? Après tout, un fichier html, c'est comme n'importe quel autre fichier. Encore qu'un fichier php, je me doute que ce que je récupère c'est le code source de la page affichée, et pas le fichier tel quel comme il est sur le serveur, mais ça me suffit...
    L'interrogation subsiste... :p

  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
    Citation Envoyé par Dreamker Voir le message
    Oui, le fichier est fermé à la fin du code.
    C'est à dire?

  7. #7
    Invité
    Invité(e)
    Par défaut
    file->close(); tout simplement. c'est pas ça?

  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
    Citation Envoyé par Dreamker Voir le message
    file->close(); tout simplement. c'est pas ça?
    ce que je veut dire, tu est sur que tu ferme ton fichier un fois totalement téléchargé?
    QHttp est asynchrone

  9. #9
    Invité
    Invité(e)
    Par défaut
    d'accord, effectivement, je ferme le fichier tout de suite... faudrait donc rajouter un signal/slot pour ne supprimer file qu'en étant sûr que ce soit fini. je vous tiens au courant d'ici à demain mais ce qui continue à m'étonner, c'est que le fichier doc à été entièrement téléchargé, avec le même code...

  10. #10
    Invité
    Invité(e)
    Par défaut
    Effectivement, tout fonctionne maintenant! J'ai juste eu à mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    connect(http, SIGNAL(done(bool)), this, SLOT(slotHTTPOk(bool)));
    et un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    file->close();
    http->close()
    dans le slot, et c'était ok.
    Merci pour votre aide

  11. #11
    Invité
    Invité(e)
    Par défaut
    En fait, non, pas encore tout à fait résolu...
    On dirait qu'on ne peut pas récupérer les pages en prenant en compte les variables php... par exemple, http://127.0.0.1/Site/page.php peut être récupérée, mais si on demande http://127.0.0.1/Site/page.php?variable=1, QHttp ne prend pas en compte la variable... Et vu que je m'en sers pour récupérer des pages après en y incorporant des variables (je saute l'étape du moteur de recherche du site en fait), et bien ça me retourne la page avec "Pas de réponse pour la recherche "" ".
    Si vous avez des infos, merci d'avance

Discussions similaires

  1. Lire du son dans une page Web
    Par zooffy dans le forum ASP.NET
    Réponses: 3
    Dernier message: 19/06/2008, 16h39
  2. Afficher du code dans une page web
    Par Damouille dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 23/07/2007, 08h06
  3. [Système] Du code sur une page web
    Par damdev955 dans le forum Langage
    Réponses: 1
    Dernier message: 16/02/2007, 15h17
  4. Récupération d'un code d'une page web
    Par Vampyre dans le forum Services Web
    Réponses: 3
    Dernier message: 12/02/2007, 21h03
  5. Lire le contenu d'une page web grâce à un script PHP
    Par BloodyImp dans le forum Langage
    Réponses: 3
    Dernier message: 06/11/2005, 23h29

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