|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Candidat au titre de Membre du Club
![]() Inscription : décembre 2006 Messages : 65 ![]() |
Bonjour à tous,
J'ai un problème pour capturer le contenu d'une balise issue d'une page récupérée avec Curl. Code :
$content = recuperer_page_http($v['adr1'].$plus.$v['adr2'], 10,'',''); De cette page j'aimerais en extraire des données spécifiques, pour ça j'ai identifié des noms de classe de balise de la page qui entoure mon information. Voici le patern que j'ai créé pour mon preg_match_all ce ui me permet de récupérer le contenu de la balise "dd" avec la classe "pdg_b_sm" Code :
$content = preg_match_all("#<dd class=\"pdg_b_sm\">.*</dd>#",$content,$resultats,PREG_PATTERN_ORDER); Code :
Si vous pouvez m'apporter de l'aide en ce qui concerne mon problème ça serait sympa, j'ai appris les expressions régulières depuis peu et la fonction preg_match_all() aussi, mais ça fait 2 jours que je m'arrache les cheveux. Pourtant je suis certain de ne pas être loin de la solution... Merci d'avance |
||
|
|
00
|
|
|
#2 |
![]() ![]() Inscription : septembre 2010 Messages : 7 103 ![]() |
pour parser du HTML c'est DOMDocument
__________________
http://blog.stealth35.com/ |
|
|
10
|
|
|
#3 |
|
Candidat au titre de Membre du Club
![]() Inscription : décembre 2006 Messages : 65 ![]() |
J'ai déjà vu une réponse similaire de toi dans d'autres topics concernant ce sujet et j'ai commencé à lire la doc PHP sur DOMDocument mais je suis sur un projet de site "comparatif de prix" et j'aurai besoin de faire cette extraction sur plusieurs sites à la fois après la requète d'un utilisateur...
DOMDucument ne serait pas trop lourd niveau ressource pour mon besoin ? Je ne suis pas contre changé de techno pour mon projet mais mes preg_match me semblait plus léger... Après je me trompe peut être... |
|
|
00
|
|
|
#4 |
![]() ![]() Inscription : septembre 2010 Messages : 7 103 ![]() |
DOMDocument est plus simple a utiliser et a comprendre que les regex, de plus que c'est fait pour ça
Pour la requete Xpath ca donnera : //dd[@class="pdg_b_sm"] essaye aussi de voir, si ton site ne propose pas une API
__________________
http://blog.stealth35.com/ |
|
|
00
|
|
|
#5 |
|
Candidat au titre de Membre du Club
![]() Inscription : décembre 2006 Messages : 65 ![]() |
Les sites que je veux "scanner" ne propose pas d'API il s'agit d'un marché trop petit et les sites ne sont pas vraiment évolués.
Je vais suivre ton conseil, je vais commenté tous mes preg_match pour le moment et je vais me lancer dans DOMDocument (j'ai quand même appris toute la syntaxe des expression régulière POSIX et PCRE pour rien mais bon, ça pourra toujours servir je me suis fait des fiches récapitulatives ^^) Merci pour le Xpath de ma requête mais je vais quand même être obligé de la déchiffrer et d'en comprendre la syntaxe sinon ça sert à rien... je crois que j'ai une nouvelle syntaxe à apprendre ! En tout cas merci pour tes réponses rapides ! |
|
|
00
|
|
|
#6 |
|
Membre régulier
![]() Étudiant Inscription : juin 2011 Messages : 55 ![]() |
Premièrement, pour isoler l’intérieur, mets des parenthèses autour de ton .* ce qui donne Deuxièmement, je rajouterai un ? apres ton .* pour bien spécifier que tu ne veux qu'une seule balise
Code :
<dd> : "#<dd class=\"pdg_b_sm\">(.*?)</dd>#" Code :
<dd class=\"pdg_b_sm\"><dd class=\"pdg_b_sm\">bla-bla</dd></dd> sinon pour répondre à ta question... a moins qu'il y ai 20 fois dans la page il y a effectivement un problème, sauf bien sur si ces balises ne contiennent que du code html et que ce code soit interprété sur la page de visualisation Teste déjà avec (.*?) et dis nous si ca change vraiment quelque chose. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com