Extraction de données d'une page web

tito23 -  
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>)
$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:

6 réponses

jeanjean_ac Messages postés 27 Date d'inscription   Statut Membre Dernière intervention  
 
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 :)
0
tito23 Messages postés 305 Date d'inscription   Statut Membre Dernière intervention   4
 
il faut rentrer london comme town et uk comme country.
0
tito23 Messages postés 305 Date d'inscription   Statut Membre Dernière intervention   4
 
up!
0
tito23 Messages postés 305 Date d'inscription   Statut Membre Dernière intervention   4
 
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]);
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
tito23 Messages postés 305 Date d'inscription   Statut Membre Dernière intervention   4
 
pas de réponses !!!
0
jeanjean_ac Messages postés 27 Date d'inscription   Statut Membre Dernière intervention  
 
Pour simuler la saisie, il faut POSTER le formulaire. Essaye avec "curl php" sous Google.
0
tito23 Messages postés 305 Date d'inscription   Statut Membre Dernière intervention   4
 
Que veut dire POSTER le formulaire?
0
tito23 Messages postés 305 Date d'inscription   Statut Membre Dernière intervention   4
 
nn je veux que tous soit automatique même l'envoi du formulaire
0
jeanjean_ac Messages postés 27 Date d'inscription   Statut Membre Dernière intervention  
 
<?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);

?>
0
jeanjean_ac Messages postés 27 Date d'inscription   Statut Membre Dernière intervention  
 
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.
0
tito23 Messages postés 305 Date d'inscription   Statut Membre Dernière intervention   4
 
je pense pas que c possible en javascript puisque c'est pas moi le proppriétaire de la page. Merci encore une autre fois.
0