2010-05-04 3 views
1

Je suis en train d'extraire des informations à partir d'une page Web en utilisant PHP cURL + preg_match ou toute autre fonction mais pour certaines raisons, il ne fonctionne pas du tout. Par exemple de this page, Je veux extraire le titre qui est "maison de 4 lits à louer, Caroline Place, Bayswater, W2", le prix qui est "2.300" et la description qui commence à "Ce fantastique ... "et se termine à" (Lignes Cercle et District). ". J'ai essayé d'utiliser php cURL + dom mais je reçois beaucoup d'erreurs comme ceci "htmlParseEntityRef: expecting ';' Entité en ligne: 243" et aucun résultat affichéExtrait une partie spécifique d'un document html, php cURL, php, preg_match

Aussi j'essayé d'utiliser preg_match ou preg_match_all mais ne fonctionne pas non plus.

Un exemple très basique serait très apprécié!

+1

Je pense que la solution DOM ne fonctionne pas en raison du fait que la page n'est pas valide xhtml ou xml – Michael

+0

Peut-être poster vos regexps que vous avez essayé qui ne fonctionnent pas. Ces modèles semblent assez simples. – serg

+0

** Don utiliser regex pour analyser HTML **, utiliser un [html dom parser à la place] (http://simplehtmldom.sourceforge.net/) il supporte le HTML invalide. –

Répondre

1

Un exemple très basique serait très apprécié

Pour répondre à la partie regex:

preg_match('!<title>(.*)</title>!s', '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
    <head> 
<title> 

      4 bedroom 


     house 


    to rent in Caroline Place, Bayswater, W2 through Foxtons (Property to rent)</title> 
<meta name="keywords" content="Houses" />', $matches); 
print_r($matches); 

/* output: 
Array 
(
    [0] => <title> 

      4 bedroom 


     house 


    to rent in Caroline Place, Bayswater, W2 through Foxtons (Property to rent)</title> 
    [1] => 

      4 bedroom 


     house 


    to rent in Caroline Place, Bayswater, W2 through Foxtons (Property to rent) 
) 
*/ 

Le s à la fin de l'expression rationnelle met l'analyseur en quelque chose (improprement) appelé single-line mode.

+0

merci beaucoup pour votre aide. J'ai réussi à créer un script pour extraire l'information dont j'avais besoin, mais j'ai encore des problèmes avec le prix. J'ai ceci: preg_match ('!

-1

Après avoir récupéré des données via curl, le résultat a beaucoup de nouvelles lignes et d'espaces. Donc, effectuez un script html propre afin de supprimer ces nouvelles lignes et espaces. Enfin, ayez un heureux preg_match