Extraction de données d'une page web

tito23 -  
tito23 Messages postés 318 Statut Membre -
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 32 Statut Membre
 
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 318 Statut Membre 4
 
il faut rentrer london comme town et uk comme country.
0
tito23 Messages postés 318 Statut Membre 4
 
up!
0
tito23 Messages postés 318 Statut Membre 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 318 Statut Membre 4
 
pas de réponses !!!
0
jeanjean_ac Messages postés 32 Statut Membre
 
Pour simuler la saisie, il faut POSTER le formulaire. Essaye avec "curl php" sous Google.
0
tito23 Messages postés 318 Statut Membre 4
 
Que veut dire POSTER le formulaire?
0
tito23 Messages postés 318 Statut Membre 4
 
nn je veux que tous soit automatique même l'envoi du formulaire
0
jeanjean_ac Messages postés 32 Statut Membre
 
<?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 32 Statut Membre
 
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 318 Statut Membre 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