Extraction de données d'une page web
tito23
-
tito23 Messages postés 305 Date d'inscription Statut Membre Dernière intervention -
tito23 Messages postés 305 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je désire extraire des données se trouvant dans un tableau de la page suivante (le résultat du formulaire) http://www.tax.org.uk/OneStopCMS/Core/TemplateHandler.aspx?NRMODE=Published&NRNODEGUID={07AB188B-C789-4AF1-88A9-4B906CA9EA15}&NRORIGINALURL=%2fabout_the_ciot%2ffind-a-cta,
Voici un exemple de code qui affiche le contenu des cellules du tableau (<td>)
Le problème c'est qu'il ya plusieurs tableaux dans la page et le tableau dont je veux extraire les données, n'as pas ni id ni name mais je pense qu'il est le deuxième, aussi le code m'affiche que le contenu du premier tableau pas celui que je désire extraire les données.
Edit, j'ai constaté que le lien affiché dans un autre onglet m'affiche pas le tableau qui est le résultat du formulaire avec "town" comme "london" et "country" comme "UK" y'as t'il un moyen de simuler le saisie de ces données pour que l'affichage du tableau soit faite.
Et merci d'avance.
J'espère que j'étais claire, toute question est la bienvenue.
Je désire extraire des données se trouvant dans un tableau de la page suivante (le résultat du formulaire) http://www.tax.org.uk/OneStopCMS/Core/TemplateHandler.aspx?NRMODE=Published&NRNODEGUID={07AB188B-C789-4AF1-88A9-4B906CA9EA15}&NRORIGINALURL=%2fabout_the_ciot%2ffind-a-cta,
Voici un exemple de code qui affiche le contenu des cellules du tableau (<td>)
$doc = new DOMDocument; $doc->loadHTMLFile("http://www.tax.org.uk/OneStopCMS/Core/TemplateHandler.aspx?NRMODE=Published&NRNODEGUID={07AB188B-C789-4AF1-88A9-4B906CA9EA15}&NRORIGINALURL=%2fabout_the_ciot%2ffind-a-cta&NRCACHEHINT=NoModifyLoggedIn"); $tableElements = $doc->getElementsByTagName('td'); $nbElements = $tableElements->length; for ($i = 0; $i <$nbElements - 1; $i++) { echo $tableElements->item($i)->nodeValue . '<br />'; }
Le problème c'est qu'il ya plusieurs tableaux dans la page et le tableau dont je veux extraire les données, n'as pas ni id ni name mais je pense qu'il est le deuxième, aussi le code m'affiche que le contenu du premier tableau pas celui que je désire extraire les données.
Edit, j'ai constaté que le lien affiché dans un autre onglet m'affiche pas le tableau qui est le résultat du formulaire avec "town" comme "london" et "country" comme "UK" y'as t'il un moyen de simuler le saisie de ces données pour que l'affichage du tableau soit faite.
Et merci d'avance.
J'espère que j'étais claire, toute question est la bienvenue.
A voir également:
- Extraction de données d'une page web
- Supprimer une page word - Guide
- Web office - Guide
- Comment traduire une page web - Guide
- Capturer une page web complète - Guide
- Créer une page web - Guide
6 réponses
Il faut rentrer quoi dans le formulaire pour avoir au moins un résultat ?
Ce sera plus facile de te proposer une solution après :)
Ce sera plus facile de te proposer une solution après :)
J'ai essayé ce code ais il m'affiche pas tous les cellules du tableau (contenu des TD)
$content = file_get_contents('TheCharteredInstituteofTaxationAboutUsFindaCTA.html'); $w = "[A-Za-z0-9]*[blank]?[0-9A-Za-z]*"; //ungreedy wildcard //$pattern = "/\<td\>$w\<\/td\>/"; //$pattern = "#<td(.*)>(.+)</td>#"; preg_match($pattern, $content, $matches); for ($i=0;$i<count($matches);$i++) echo($matches[$i]);
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Pour simuler la saisie, il faut POSTER le formulaire. Essaye avec "curl php" sous Google.
<?php $url = 'http://www.tax.org.uk/OneStopCMS/Core/TemplateHandler.aspx?NRMODE=Published&NRNODEGUID={07AB188B-C789-4AF1-88A9-4B906CA9EA15}&NRORIGINALURL=%2fabout_the_ciot%2ffind-a-cta'; $data = array( //'__EVENTTARGET' => '', //'__EVENTARGUMENT' => '', //'__VIEWSTATE' => '/wEPDwUENTM4MWQYAQUeX19Db250cm9sc1JlcXVpcmVQb3N0QmFja0tleV9fFgEFSE1haW5Db250cm9sJFBhZ2VIZWFkZXIxJFZpZXdpbmdPcHRpb25zQW5kU2VhcmNoMSRDb250ZW50U2VhcmNoRm9ybSRjdGwwMcjg+iXblljXfdHRjntEPUtkb4/e', 'MainControl$CustomFunctionality_ZoneMain$MemberSearchPanel1$MemberSearchForm$Specialism' => '', 'MainControl$CustomFunctionality_ZoneMain$MemberSearchPanel1$MemberSearchForm$Town' => 'london', 'MainControl$CustomFunctionality_ZoneMain$MemberSearchPanel1$MemberSearchForm$Postcode' => '', 'MainControl$CustomFunctionality_ZoneMain$MemberSearchPanel1$MemberSearchForm$Country' => 'UK', 'MainControl$CustomFunctionality_ZoneMain$MemberSearchPanel1$MemberSearchForm$submitButton' => 'Search for members', 'MainControl$CustomFunctionality_ZoneMain$MemberSearchPanel1$MemberSearchForm$disabledValidators' => '', 'MainControl$CustomFunctionality_ZoneMain$MemberSearchPanel1$MemberSearchForm$skv' => '' ); error_reporting(E_ALL); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); curl_exec($ch); ?>
Ce morceau de code simule l'envoi du formulaire (en POST).
Le problème, c'est que je ne sais pas du tout comment fonctionne ce formulaire. C'est blindé de javascript, et d'identifiants uniques. Il semblerait que les trois lignes commentées soient importante, car si elles sont mauvaises elles provoquent une erreur. Pour faire simple, ça va être très compliqué...
Est-il envisageable que l'extraction des données se fassent en javascript ? ça évite d'avoir à comprendre la logique de ce formulaire, et un petit script vite fait pourrait simplement remplir le formulaire, l'envoyer, et récupérer les données.
Le problème, c'est que je ne sais pas du tout comment fonctionne ce formulaire. C'est blindé de javascript, et d'identifiants uniques. Il semblerait que les trois lignes commentées soient importante, car si elles sont mauvaises elles provoquent une erreur. Pour faire simple, ça va être très compliqué...
Est-il envisageable que l'extraction des données se fassent en javascript ? ça évite d'avoir à comprendre la logique de ce formulaire, et un petit script vite fait pourrait simplement remplir le formulaire, l'envoyer, et récupérer les données.