J'essaie d'analyser une certaine section d'un site Web avec PHP Simple HTML DOM
Résolu
ananias8686
Messages postés
86
Date d'inscription
Statut
Membre
Dernière intervention
-
ananias8686 Messages postés 86 Date d'inscription Statut Membre Dernière intervention -
ananias8686 Messages postés 86 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'essaie d'analyser une certaine section d'un site Web avec la bibliothèque PHP Simple HTML DOM. Je sais que mon instruction cURL fonctionne et saisit le code HTML brut, car je peux faire écho aux résultats de la commande cURL et voir le contenu de la page Web sur mon serveur.
Je veux récupérer le BIC en envoyant par la méthode POST l'iban.
Voici mon code php mais je ne sais pas comment récupérer uniquement le BIC.
J'essaie d'analyser une certaine section d'un site Web avec la bibliothèque PHP Simple HTML DOM. Je sais que mon instruction cURL fonctionne et saisit le code HTML brut, car je peux faire écho aux résultats de la commande cURL et voir le contenu de la page Web sur mon serveur.
Je veux récupérer le BIC en envoyant par la méthode POST l'iban.
Voici mon code php mais je ne sais pas comment récupérer uniquement le BIC.
<?php include_once('simple_html_dom/simple_html_dom.php'); /* Utilisation de Curl */ //On stock la valeur des variables POST $iban='BE30293034556711'; $url='https://www.ibancalculator.com/validate/'.$iban.'/'; $data=array( 'tx_valIBAN_pi1[iban]' => $iban) ; $fields_string = http_build_query($data); //Initialisation de curl dans $curl $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); //Page sur laquelle envoyer les POST autrement dit la page vers laquelle pointe le formulaire curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS,$fields_string); //On envoie les valeurs curl_setopt($ch, CURLOPT_FAILONERROR, true); // Required for HTTP error codes to be reported via our call to curl_error($ch) curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); $data = curl_exec($ch); //Recuparation de la page curl_close($ch); $html = file_get_html($url); echo $html->plaintext;//comment récupérer le BIC // clean up memory $html->clear(); unset($html); ?>
A voir également:
- Simple_html_dom
- Site comme coco - Accueil - Réseaux sociaux
- Site de telechargement - Accueil - Outils
- Création site web - Guide
- Web office - Guide
- Quel site remplace coco - Accueil - Réseaux sociaux
6 réponses
Bonjour,
Ce qu'il faudrait, c'est nous montrer la structure de la réponse.
Il se pourrait qu'avec des REGEX tu puisses extraire les données qui t'intéresse.
(à condition que la structure soit toujours identique bien entendu...).
Ce qu'il faudrait, c'est nous montrer la structure de la réponse.
Il se pourrait qu'avec des REGEX tu puisses extraire les données qui t'intéresse.
(à condition que la structure soit toujours identique bien entendu...).
Par contre tu le récpères en plaintext.
Je pense qu'en html il serait plus facile de l'utiliser....
De plus, merci de nous coller le contenu directement sur le forum au lieu d'en mettre une image car cela nous permettrait de pouvoir faire du copier/coller.....sans avoir à tout réécrire !
Je pense qu'en html il serait plus facile de l'utiliser....
De plus, merci de nous coller le contenu directement sur le forum au lieu d'en mettre une image car cela nous permettrait de pouvoir faire du copier/coller.....sans avoir à tout réécrire !
Bonjour, voici le contenu de la réponse
Validate an IBAN DE ♦ EN ♦ ES ♦ IT ♦ NL ♦ PL ♦ 中文 Toggle navigation FindGuaranteeFAQAboutPrivacy Calculate an IBAN | Check an IBAN | Check account number | Find bank/bank code/BIC | EU transfer Premium Version Ideal for corporate clients:Mass Calculations: Process a whole CSV file at once. SOAP Interface. Secure SSL connection. Try mass calculations or the SOAP interface for free using the Welcome Bonus Points. Premium registration... Check IBAN / show more informationYou entered: IBAN to check: BE30293034556711 Checks This IBAN has the correct length for this country (Belgium). Bankleitzahl (bank code) 293: This Bankleitzahl (bank code) is correct. Account number 293034556711: The account number contains a valid checksum. IBAN BE30293034556711: The IBAN checksum is correct. Result This is a valid IBAN. IBAN: BE30293034556711 IBAN into the clipboard BIC: GEBABEBB BIC into the clipboard Bank: BNP Paribas Fortis Montagne du Parc 3 1000 Brussels SEPA Credit Transfer is supported. SEPA Direct Debit is supported. B2B is supported. SEPA Instant Credit Transfer is supported. Data valid as of: 30. 3. 2020 (March 30, 2020). Validate another IBAN Money transfer Save on international transfers with TransferWise, which is around 5x cheaper than bank transfers. Learn more. Integrate IBAN validation into your own software or website View this result in a printer-friendly form Copyright © 2004-2018 Theano GmbHH
Depuis 30 min la page se charge sans arrêt. Voici une partie que j'ai pu copier :
simple_html_dom Object ( [root] => simple_html_dom_node Object ( [nodetype] => 5 [tag] => root [attr] => Array ( ) [children] => Array ( [0] => simple_html_dom_node Object ( [nodetype] => 6 [tag] => unknown [attr] => Array ( ) [children] => Array ( ) [nodes] => Array ( ) [parent] => simple_html_dom_node Object *RECURSION* [_] => Array ( [0] => 1 [4] => ) [tag_start] => 0 [dom:simple_html_dom_node:private] => simple_html_dom Object *RECURSION* ) [1] => simple_html_dom_node Object ( [nodetype] => 1 [tag] => html [attr] => Array ( [lang] => en ) [children] => Array ( [0] => simple_html_dom_node Object ( [nodetype] => 1 [tag] => head [attr] => Array ( ) [children] => Array ( [0] => simple_html_dom_node Object ( [nodetype] => 1 [tag] => meta [attr] => Array ( [charset] => utf-8 ) [children] => Array ( ) [nodes] => Array ( ) [parent] => simple_html_dom_node Object *RECURSION* [_] => Array ( [0] => 7 [2] => Array ( [0] => 0 ) [3] => Array ( [0] => Array ( [0] => [1] => [2] => ) ) [7] => ) [tag_start] => 41 [dom:simple_html_dom_node:private] => simple_html_dom Object *RECURSION* ) [1] => simple_html_dom_node Object ( [nodetype] => 2 [tag] => comment [attr] => Array ( ) [children] => Array ( ) [nodes] => Array ( ) [parent] => simple_html_dom_node Object *RECURSION* [_] => Array ( [0] => 9 [4] => ) [tag_start] => 64 [dom:simple_html_dom_node:private] => simple_html_dom Object *RECURSION* ) [2] => simple_html_dom_node Object ( [nodetype] => 1 [tag] => title [attr] => Array ( ) [children] => Array ( ) [nodes] => Array ( [0] => simple_html_dom_node Object ( [nodetype] => 3 [tag] => text [attr] => Array ( ) [children] => Array ( ) [nodes] => Array ( ) [parent] => simple_html_dom_node Object *RECURSION* [_] => Array ( [4] => Validate an IBAN ) [tag_start] => 0 [dom:simple_html_dom_node:private] => simple_html_dom Object *RECURSION* ) ) [parent] => simple_html_dom_node Object *RECURSION* [_] => Array ( [0] => 11 [7] => [1] => 13 ) [tag_start] => 91 [dom:simple_html_dom_node:private] => simple_html_dom Object *RECURSION* ) [3] => simple_html_dom_node Object ( [nodetype] => 1 [tag] => meta [attr] => Array ( [name] => generator [content] => TYPO3 CMS ) [children] => Array ( ) [nodes] => Array ( ) [parent] => simple_html_dom_node Object *RECURSION* [_] => Array ( [0] => 14 [2] => Array ( [0] => 0 [1] => 0 ) [3] => Array ( [0] => Array ( [0] => [1] => [2] => ) [1] => Array ( [0] => [1] => [2] => ) ) [7] => ) [tag_start] => 123 [dom:simple_html_dom_node:private] => simple_html_dom Object *RECURSION* ) [4] => simple_html_dom_node Object ( [nodetype] => 1 [tag] => meta [attr] => Array ( [name] => description [content] => Validate an IBAN and find BIC (SWIFT) and the domestic account number and bank code. With correctness guarantee. ) [children] => Array ( ) [nodes] => Array ( ) [parent] => simple_html_dom_node Object *RECURSION* [_] => Array ( [0] => 16 [2] => Array ( [0] => 0 [1] => 0 ) [3] => Array ( [0] => Array ( [0] => [1] => [2] => ) [1] => Array ( [0] => [1] => [2] => ) ) [7] => ) [tag_start] => 167 [dom:simple_html_dom_node:private] => simple_html_dom Object *RECURSION* ) [5] => simple_html_dom_node Object ( [nodetype] => 1 [tag] => meta [attr] => Array ( [name] => keywords [content] => IBAN, BIC, bank account number, bank code, IBAN validation, SWIFT ) [children] => Array ( ) [nodes] => Array ( ) [parent] => simple_html_dom_node Object *RECURSION* [_] => Array ( [0] => 18 [2] => Array ( [0] => 0 [1] => 0 ) [3] => Array ( [0] => Array ( [0] => [1] => [2] => ) [1] => Array ( [0] => [1] => [2] => ) ) [7] => ) [tag_start] => 316 [dom:simple_html_dom_node:private] => simple_html_dom Object *RECURSION* ) [6] => simple_html_dom_node Object ( [nodetype] => 1 [tag] => meta [attr] => Array ( [name] => author [content] => Dr. Rainer Typke + Dr. Agatha Walczak-Typke ) [children] => Array ( ) [nodes] => Array ( ) [parent] => simple_html_dom_node Object *RECURSION* [_] => Array ( [0] => 20 [2] => Array ( [0] => 0 [1] => 0 ) [3] => Array ( [0] => Array ( [0] => [1] => [2] => ) [1] => Array ( [0] => [1] => [2] => ) ) [7] => ) [tag_start] => 415 [dom:simple_html_dom_node:private] => simple_html_dom Object *RECURSION* ) [7] => simple_html_dom_node Object ( [nodetype] => 1 [tag] => meta [attr] => Array ( [name] => robots [content] => index, follow ) [children] => Array ( ) [nodes] => Array ( ) [parent] => simple_html_dom_node Object *RECURSION* [_] => Array ( [0] => 22 [2] => Array ( [0] => 0 [1] => 0 ) [3] => Array ( [0] => Array ( [0] => [1] => [2] => ) [1] => Array ( [0] => [1] => [2] => ) ) [7] => ) [tag_start] => 490 [dom:simple_html_dom_node:private] => simple_html_dom Object *RECURSION* ) [8] => simple_html_dom_node Object ( [nodetype] => 1 [tag] => meta [attr] => Array ( [name] => MSSmartTagsPreventParsing [content] => true ) [children] => Array ( ) [nodes] => Array ( ) [parent] => simple_html_dom_node Object *RECURSION* [_] => Array ( [0] => 24 [2] => Array ( [0] => 0 [1] => 0 ) [3] => Array ( [0] => Array ( [0] => [1] => [2] => ) [1] => Array ( [0] => [1] => [2] => ) ) [7] => ) [tag_start] => 535 [dom:simple_html_dom_node:private] => simple_html_dom Object *RECURSION* ) [9] => simple_html_dom_node Object ( [nodetype] => 1 [tag] => meta [attr] => Array ( [name] => imagetoolbar [content] => false
La page ne cesse pas de se charger, j'ai pu copier une partie, je ne sais pas si celle-ci est importante.
simple_html_dom Object ( [root] => simple_html_dom_node Object ( [nodetype] => 5 [tag] => root [attr] => Array ( ) [children] => Array ( [0] => simple_html_dom_node Object ( [nodetype] => 6 [tag] => unknown [attr] => Array ( ) [children] => Array ( ) [nodes] => Array ( ) [parent] => simple_html_dom_node Object *RECURSION* [_] => Array ( [0] => 1 [4] => ) [tag_start] => 0 [dom:simple_html_dom_node:private] => simple_html_dom Object *RECURSION* ) [1] => simple_html_dom_node Object ( [nodetype] => 1 [tag] => html [attr] => Array ( [lang] => en ) [children] => Array ( [0] => simple_html_dom_node Object ( [nodetype] => 1 [tag] => head [attr] => Array ( ) [children] => Array ( [0] => simple_html_dom_node Object ( [nodetype] => 1 [tag] => meta [attr] => Array ( [charset] => utf-8 ) [children] => Array ( ) [nodes] => Array ( ) [parent] => simple_html_dom_node Object *RECURSION* [_] => Array ( [0] => 7 [2] => Array ( [0] => 0 ) [3] => Array ( [0] => Array ( [0] => [1] => [2] => ) ) [7] => ) [tag_start] => 41 [dom:simple_html_dom_node:private] => simple_html_dom Object *RECURSION* ) [1] => simple_html_dom_node Object ( [nodetype] => 2 [tag] => comment [attr] => Array ( ) [children] => Array ( ) [nodes] => Array ( ) [parent] => simple_html_dom_node Object *RECURSION* [_] => Array ( [0] => 9 [4] => ) [tag_start] => 64 [dom:simple_html_dom_node:private] => simple_html_dom Object *RECURSION* ) [2] => simple_html_dom_node Object ( [nodetype] => 1 [tag] => title [attr] => Array ( ) [children] => Array ( ) [nodes] => Array ( [0] => simple_html_dom_node Object ( [nodetype] => 3 [tag] => text [attr] => Array ( ) [children] => Array ( ) [nodes] => Array ( ) [parent] => simple_html_dom_node Object *RECURSION* [_] => Array ( [4] => Validate an IBAN ) [tag_start] => 0 [dom:simple_html_dom_node:private] => simple_html_dom Object *RECURSION* ) ) [parent] => simple_html_dom_node Object *RECURSION* [_] => Array ( [0] => 11 [7] => [1] => 13 ) [tag_start] => 91 [dom:simple_html_dom_node:private] => simple_html_dom Object *RECURSION* ) [3] => simple_html_dom_node Object ( [nodetype] => 1 [tag] => meta [attr] => Array ( [name] => generator [content] => TYPO3 CMS ) [children] => Array ( ) [nodes] => Array ( ) [parent] => simple_html_dom_node Object *RECURSION* [_] => Array ( [0] => 14 [2] => Array ( [0] => 0 [1] => 0 ) [3] => Array ( [0] => Array ( [0] => [1] => [2] => ) [1] => Array ( [0] => [1] => [2] => ) ) [7] => ) [tag_start] => 123 [dom:simple_html_dom_node:private] => simple_html_dom Object *RECURSION* ) [4] => simple_html_dom_node Object ( [nodetype] => 1 [tag] => meta [attr] => Array ( [name] => description [content] => Validate an IBAN and find BIC (SWIFT) and the domestic account number and bank code. With correctness guarantee. ) [children] => Array ( ) [nodes] => Array ( ) [parent] => simple_html_dom_node Object *RECURSION* [_] => Array ( [0] => 16 [2] => Array ( [0] => 0 [1] => 0 ) [3] => Array ( [0] => Array ( [0] => [1] => [2] => ) [1] => Array ( [0] => [1] => [2] => ) ) [7] => ) [tag_start] => 167 [dom:simple_html_dom_node:private] => simple_html_dom Object *RECURSION* ) [5] => simple_html_dom_node Object ( [nodetype] => 1 [tag] => meta [attr] => Array ( [name] => keywords [content] => IBAN, BIC, bank account number, bank code, IBAN validation, SWIFT ) [children] => Array ( ) [nodes] => Array ( ) [parent] => simple_html_dom_node Object *RECURSION* [_] => Array ( [0] => 18 [2] => Array ( [0] => 0 [1] => 0 ) [3] => Array ( [0] => Array ( [0] => [1] => [2] => ) [1] => Array ( [0] => [1] => [2] => ) ) [7] => ) [tag_start] => 316 [dom:simple_html_dom_node:private] => simple_html_dom Object *RECURSION* ) [6] => simple_html_dom_node Object ( [nodetype] => 1 [tag] => meta [attr] => Array ( [name] => author [content] => Dr. Rainer Typke + Dr. Agatha Walczak-Typke ) [children] => Array ( ) [nodes] => Array ( ) [parent] => simple_html_dom_node Object *RECURSION* [_] => Array ( [0] => 20 [2] => Array ( [0] => 0 [1] => 0 ) [3] => Array ( [0] => Array ( [0] => [1] => [2] => ) [1] => Array ( [0] => [1] => [2] => ) ) [7] => ) [tag_start] => 415 [dom:simple_html_dom_node:private] => simple_html_dom Object *RECURSION* ) [7] => simple_html_dom_node Object ( [nodetype] => 1 [tag] => meta [attr] => Array ( [name] => robots [content] => index, follow ) [children] => Array ( ) [nodes] => Array ( ) [parent] => simple_html_dom_node Object *RECURSION* [_] => Array ( [0] => 22 [2] => Array ( [0] => 0 [1] => 0 ) [3] => Array ( [0] => Array ( [0] => [1] => [2] => ) [1] => Array ( [0] => [1] => [2] => ) ) [7] => ) [tag_start] => 490 [dom:simple_html_dom_node:private] => simple_html_dom Object *RECURSION* ) [8] => simple_html_dom_node Object ( [nodetype] => 1 [tag] => meta [attr] => Array ( [name] => MSSmartTagsPreventParsing [content] => true ) [children] => Array ( ) [nodes] => Array ( ) [parent] => simple_html_dom_node Object *RECURSION* [_] => Array ( [0] => 24 [2] => Array ( [0] => 0 [1] => 0 ) [3] => Array ( [0] => Array ( [0] => [1] => [2] => ) [1] => Array ( [0] => [1] => [2] => ) ) [7] => ) [tag_start] => 535 [dom:simple_html_dom_node:private] => simple_html_dom Object *RECURSION* ) [9] => simple_html_dom_node Object ( [nodetype] => 1 [tag] => meta [attr] => Array ( [name] => imagetoolbar [content] => false
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
En fait, il faudrait regarder le code html de la page que tu récupères et afficher son code source.
De là, essayer de voir dans quelle balise se trouve l'élément que tu cherches
Une fois identifiée, tu pourrais utiliser la méthode find du html_dom afin de la récupérer.
regarde ici ( la section How to find HTML elements? )
https://simplehtmldom.sourceforge.io/manual.htm
De là, essayer de voir dans quelle balise se trouve l'élément que tu cherches
Une fois identifiée, tu pourrais utiliser la méthode find du html_dom afin de la récupérer.
regarde ici ( la section How to find HTML elements? )
https://simplehtmldom.sourceforge.io/manual.htm
Voici une partie du html que j'avais déjà extraire avec le code BIC "DEKTDE7GXXX" qui se trouve à la ligne 43.
Le BIC n'est pas contenu dans une div mais dans une balise <p> ligne 43
Comment puis-je afficher cette balise?
Le BIC n'est pas contenu dans une div mais dans une balise <p> ligne 43
Comment puis-je afficher cette balise?
<fieldset> <legend>Checks</legend> <table> <tr> <td valign="top"><img src="plu.gif.pagespeed.ce.bUDgwa48V8.gif" width="16" height="16" alt="+"></td> <td> <p>This IBAN has the correct length for this country (Germany).</p> </td> </tr> <tr> <td valign="top"><img src="plu.gif.pagespeed.ce.bUDgwa48V8.gif" width="16" height="16" alt="+"></td> <td> <p>Bankleitzahl (bank code) 70011110: This Bankleitzahl (bank code) is correct.</p> </td> </tr> <tr> <td valign="top"><img src="plu.gif.pagespeed.ce.bUDgwa48V8.gif" width="16" height="16" alt="+"></td> <td> <p>Account number 6055505339: The account number contains a valid checksum. (<a href="#" onclick="document.getElementById('detailrow').style.display='';">Details</a>)</p> </td> </tr> <tr id="detailrow" style="display: none"> <td></td> <td> <p>Methode 06, Konto 6055505339, BLZ 70011110, Prüfziffer 9 steht an Position 10, erwartete Prüfziffer: 9. Überblick über die Berechnung: Nimm die Ziffern auf den Positionen 1 bis 9 - hier: 605550533 -, multipliziere sie von rechts nach links mit den Gewichten 2,3,4,5,6,7,2,3,4, addiere die Produkte, bilde den Rest der D</p> </td> </tr> <tr> <td valign="top"><img src="plu.gif.pagespeed.ce.bUDgwa48V8.gif" width="16" height="16" alt="+"></td> <td> <p>IBAN DE57700111106055505339: The IBAN checksum is correct.</p> </td> </tr> </table> </fieldset> <fieldset> <legend>Result</legend> <p><b>This is a valid IBAN.</b></p> <p><b>IBAN:</b> DE57700111106055505339 <button class="js-copy-iban-btn">IBAN into the clipboard</button> </p> <p><b>BIC:</b> DEKTDE7GXXX (München) <button class="js-copy-bic-btn">BIC into the clipboard</button> </p>
Dans le exemples sur lien que je t'ai donné... il te montre comment accéder à une balise div, une balise a ....
de là, tu devrait être en mesure de déduire comment récupérer les balises <p>
// Find all anchors, returns a array of element objects $ret = $html->find('a'); // Find (N)th anchor, returns element object or null if not found (zero based) $ret = $html->find('a', 0); // Find lastest anchor, returns element object or null if not found (zero based) $ret = $html->find('a', -1); // Find all <div> with the id attribute $ret = $html->find('div[id]'); // Find all <div> which attribute id=foo $ret = $html->find('div[id=foo]');
de là, tu devrait être en mesure de déduire comment récupérer les balises <p>
J'ai lu la documentation, j'ai fait des recherche sur comment atteindre une balise p mais sans succès.
J'ai identifier une div avec la class
De plus la page n'arrete pas de charger quand j'execute le code. Dans le journal des erreurs j'ai ceci comme erreur "Maximum execution time of 30 seconds exceeded"
Peut-on utiliser des regex pour extraire le Bic, Celle-ci peut faire sortir un BIC
Pourriez-vous m'aider un peu plus ? Comment atteindre la balise <p> et afficher le BIC.
J'ai identifier une div avec la class
tx-valIBAN-pi1mais lorsque j'execute le code ci-dessous ça n'envoie pas les données post, c'est à croire qu'il n'y a aucun traitement.
$html = file_get_html($url); $r= $html->find('div.tx-valIBAN-pi1'); print_r($r) ;
De plus la page n'arrete pas de charger quand j'execute le code. Dans le journal des erreurs j'ai ceci comme erreur "Maximum execution time of 30 seconds exceeded"
Peut-on utiliser des regex pour extraire le Bic, Celle-ci peut faire sortir un BIC
[A-Z]{6,6}[A-Z2-9][A-NP-Z0-9]([A-Z0-9]{3,3}){0,1}
Pourriez-vous m'aider un peu plus ? Comment atteindre la balise <p> et afficher le BIC.
Voici la structure de la réponse