2009-10-20 6 views
0

Je l'adresse suivante: -Xpath Query sur la page HTML - syntaxe?

http://ask.recipelabs.com/users

et je souhaite trouver le plus grand nombre de pages dans la (dans ce cas, il est 7) ​​div id « pager »

J'ai essayé mais il renvoie zéro:

function getusers($url) 
{ 
$doc = new DOMDocument; 
$doc->loadhtml($url); 
$xpath = new DOMXPath($doc); 
$nodelist = $xpath->query('//span[@class="page-numbers"]'); 
echo 'there are ', $nodelist->length, ' span elements having class="page-numbers"'; 
} 

Ma syntaxe est-elle incorrecte? J'espérais alors faire un pas dans le tableau et trouver le nombre le plus élevé.

Merci

Jonathan

+1

directement liée à http://stackoverflow.com/questions/1595072/extract-value-from-web-page – VolkerK

+0

est-ce que la page valide comme xml? Si ce n'est pas le cas, XPath ne trouvera probablement pas ce que vous cherchez. – dnagirl

Répondre

0

Vous pouvez essayer:

 
(//span[@class="page-numbers"][number(.) > 0])[last()] 

Cela vous donne un dernier nœud qui a encore un certain nombre que son contenu.

+0

qui ne semble pas fonctionner - pourriez-vous l'essayer avec l'URL que j'ai inclus et la fonction complète que j'ai fournie? –

+0

le tableau est vide –

0

Le problème est que vous utilisez

$doc->loadhtml($url); 

Et à moins url $ est mal nommé, il est une chaîne contenant une URL, pas HTML. Une telle chaîne analyse un DOM à peu près vide, certainement pas un avec tous les XPath attendus, et voila ...

Peut-être que vous vouliez dire $doc = loadHTMLFile($url);?

Questions connexes