Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 19/06/2011, 22h06   #1
Invité de passage
 
Inscription : janvier 2010
Messages : 4
Détails du profil
Informations forums :
Inscription : janvier 2010
Messages : 4
Points : 3
Points : 3
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 :
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 :
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 :
#^<span class="prod-name"><a href=.*</span>$#i
Code :
#^<span class="prod-type">.*</span>$#i
Et mon code

Code :
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
Truxs est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/06/2011, 08h06   #2
Membre Expert
 
Avatar de transgohan
 
Homme Baptiste ROUSSEL
Étudiant
Inscription : janvier 2011
Messages : 806
Détails du profil
Informations personnelles :
Nom : Homme Baptiste ROUSSEL
Localisation : France, Territoire de Belfort (Franche Comté)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : janvier 2011
Messages : 806
Points : 1 520
Points : 1 520
Pour parser du HTML c'est DOMDocument.
__________________
Toujours se souvenir que la majorité des ennuis viennent de l'espace occupé entre la chaise et l'écran de l'ordinateur.
transgohan est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 20/06/2011, 18h11   #3
Invité de passage
 
Inscription : janvier 2010
Messages : 4
Détails du profil
Informations forums :
Inscription : janvier 2010
Messages : 4
Points : 3
Points : 3
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
Truxs est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/06/2011, 18h36   #4
Membre chevronné
 
Homme
Développeur Web
Inscription : mars 2011
Messages : 399
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur Web
Secteur : Finance

Informations forums :
Inscription : mars 2011
Messages : 399
Points : 662
Points : 662


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

Sinon, un ptit [Résolu] ?
__________________
Membre de StackOverflow, je suis un fervant utilisateur de PHP et de jQuery.
Après des études de graphisme, j'ai décidé de mélanger développement web et web design. J'ai ainsi donc créé mon site web mais aussi plusieurs projets personnels.
Dans les plus aboutis, vous pourrez trouver dans mon labo et dans mon devblog, un raccourcisseur d'url, un bookmarklet pour envoyer l'url de la page actuelle vers votre email pour lire plus tard ou sauvegarder, mon générateur de template HTML5, etc...
Shikiryu est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h31.


 
 
 
 
Partenaires

Hébergement Web