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

Langage PHP Discussion :

Parser un fichier html


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5
    Points : 5
    Points
    5
    Par défaut Parser un fichier html
    Bonjour à tous,

    Je souhaite remplir une base de données en me basant sur une liste d'un site web, pour cela j'aimerais passer du html (mal foutu) de la page à un csv.

    Chaque élément de la liste ressemble à ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <div id="results-panel-content" class="list"><div class="search-result-product fltleft">
    <a href="URL" title="View Details" class="prod-thumb">
    <img src="URL" alt="bla" height="100" class="large"/>
    <img src="URL"  alt="bla" class="small"/></a>
    <span class="product-details"><span class="class-image"> <img src="URL" width="25" height="30" alt=" Exclusive"/></span>
    <span class="prod-name"><a href="URL" title="blabla">blabla</a></span>
    <span class="prod-type">blabla</span></span>
    <span class="status-banner">Status: <span class="in-stock">in-stock</span></span>
    <span class="prod-price"><span class="price normal">blabla</span></span>
    <span class="flex-available"><a href="URL" title="View  option">blabla <strong>blabla</strong>/ month</a></span>
    <span class="prod-link"><a href="URL" title="bla"><img src="URL" width="130" height="20" alt="Learn More"/></a></span></div>
    Et mon but c'est d'extraire cette partie

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <span class="prod-name"><a href="URL" title="bla">bla</a></span>
    <span class="prod-type">bla</span></span>
    Pour cela 2 regex

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #^<span class="prod-name"><a href=.*</span>$#i
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #^<span class="prod-type">.*</span>$#i
    Et 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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    <?php
    $pattern1="#^<span class=\"prod-name\"><a href=.*</span>$#i";
     
    $pattern2="#^<span class=\"prod-type\">.*</span>$#i";
     
    //on ouvre le fichier dans lequel on veut lire
    $file = fopen('listing.html', 'r+');
     
    //on ouvre le fichier dans lequel on veut écrire
    $file2 = fopen('tri.txt', 'a+');
    if ($file){
    	/*Tant que l'on est pas à la fin du fichier*/
    	while (!feof($file))
    	{	
    	/*On lit la ligne courante*/
    	$buffer = fgets($file);
     
    	/*si cela correspond à la regex on écrit dans tri.txt*/
    	if(preg_match_all($pattern1, $buffer, $matches)){
    		fputs($file2, $matches[0][0]);
    	}
     
    }}
     
    fclose ($file);
    fclose ($file2);
     
    echo"done"
    ?>
    Au final j'obtiens bien tri.txt mais il est totalement vide, et j'arrive pas à voir ou se trouve mon erreur

  2. #2
    Expert éminent
    Avatar de transgohan
    Homme Profil pro
    Développeur Temps réel Embarqué
    Inscrit en
    Janvier 2011
    Messages
    3 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Temps réel Embarqué

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 146
    Points : 9 391
    Points
    9 391
    Par défaut
    Pour parser du HTML c'est DOMDocument.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    Merci, j'ai regardé un peu et vu la lourdeur du truc je suis passé par simplehtmldom
    Étant habitué à jquery ça me parait beaucoup plus simple

  4. #4
    Membre éclairé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2011
    Messages
    411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 411
    Points : 735
    Points
    735
    Par défaut


    C'est vrai, passer par une classe, c'est mieux que les possibilités 'natives'.

    Sinon, un ptit [Résolu] ?

Discussions similaires

  1. parser un fichier HTML avec JAVA
    Par ouinih dans le forum EDI et Outils pour Java
    Réponses: 2
    Dernier message: 09/02/2009, 11h33
  2. parser un fichier html: htmlparser
    Par dalila555 dans le forum Format d'échange (XML, JSON...)
    Réponses: 4
    Dernier message: 24/04/2007, 12h34
  3. parser un fichier html en utilisant java
    Par taouja dans le forum Services Web
    Réponses: 1
    Dernier message: 16/04/2007, 11h12
  4. [C#] Comment lire et parser un fichier html ?
    Par fix105 dans le forum C#
    Réponses: 4
    Dernier message: 28/01/2006, 16h38
  5. parser un fichier html
    Par noarno dans le forum ASP
    Réponses: 2
    Dernier message: 10/12/2003, 18h53

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