2011-05-29 2 views
0

Je veux analyser un site avec le chemin PHP DOM-Document: Notez qu'il est plus rapide et plus facile à utiliser. Certains d'entre vous m'ont convaincu !! Une question - puisque je suis un php-débutant ;-) puis-je appliquer le XPath codeappliquer Xpaths à PHP :: Libxml - Comment faire?

Exemple: http://buergerstiftungen.de/cps/rde/xchg/SID-F8780E81-ABF20567/buergerstiftungen/hs.xsl/db.htm

Objectif: chercher les résultats (environ 213) enregistre différents aussi et les analyser afin de obtenir un vidage de base de données pour l'enregistrement sur un MySQL-Db local?

par la voie: voir deux resultpages:

http://buergerstiftungen.de/cps/rde/xchg/SID-F8780E81-ABF20567/buergerstiftungen/hs.xsl/db_20302.htm http://buergerstiftungen.de/cps/rde/xchg/SID-F8780E81-ABF20567/buergerstiftungen/hs.xsl/db_20289.htm

Vous voyez qu'il ya beaucoup d'informations stockées ...

bien que j'ai essayé de faire écrire un grattoir avec Perl - mais je n'ai pas eu de chance. Perl est pour les débutants très très dur. Ensuite, je me suis fatigué d'écrire un analyseur en PHP - c'est un peu plus facile. Mais le site (voir les detail-resultpages) est un peu complexe. Comment les analyser - afin d'obtenir l'ensemble de données pour une base de données MySQL locale. Ensuite, j'ai plus d'opportunités pour une récupération. Je veux que les données soient locales (sur mon système Linux OpenSuse version 11.3) dans une base de données MySQL.

bien: i trois parties:

  1. allant chercher
  2. analyse syntaxique
  3. stockage (dans MySQL: cela crée un MySQL-dump)

Depuis que j'ai de très peu expérience avec XPath j'ai un outil Xpather dans mon navigateur Mozilla. Peut-être que certains d'entre vous peuvent m'aider ici - et montrez-moi comment les appliquer dans un parsercode:

J'adore avoir de vos nouvelles, je ne sais pas comment les appliquer - voir les données que j'ai recueillies - ci-dessous:

voir ici quelques détails: les résultats (des 213 enregistrements différents environ) - voir deux resultpages: - rassemblé quelques données XPath:

Exemple: Bürgerstiftung Wiesloch http://buergerstiftungen.de/cps/rde/xchg/SID-A7DCD0D1-702CE0FA/buergerstiftungen/hs.xsl/db_20289.htm

/html/body/div [@ id = 'principal']/div [@ id = 'wrapper']/div [@ id = 'interne']/div [@ id = 'marginblock']/div [1]/p

1. Gründungsgeschichte /html/corps/div [@ id = 'principal']/div [@ id = 'wrapper']/div [@ id = 'interne']/div [@ id = 'contentblock']/div/p [1]/strong

2. Kurzvorstellung/Ziele /html/corps/div [@ id = 'principale']/div [@ id = 'emballage' ]/div [@ id = 'interne']/div [@ id = 'contentblock']/div/p [2]/span [2]/span/b

3.Projekte /html/body/div [@ id = 'principal']/div [@ id = 'wrapper']/div [@ id = 'interne']/div [@ id = 'contentblock']/div/p [3]/span [2]/span/strong

Kontakt: /html/corps/div [@ id = 'principal']/div [@ id = 'wrapper']/div [@ id = 'intérieure']/div [@ id = 'marginalblock']/div [1]/h6

question: Eh bien, comment appliquer les données acquises dans le Libxml - afin d'obtenir le parseur-partie jusqu'à et en cours d'exécution !? Je suis un XPath-starter!

Réjouissez-vous de vos nouvelles! PS - si je dois ajouter plus d'infos - ou si je dois demander plus proprement - plz faites le moi savoir! zéro

! Désolé pour être le débutant ;-)

PPS - et mise à jour: j'ai le Mysql-partie: il peut ressembler à ceci:

CREATE TABLE IF NOT EXISTS `address` (
`id` int(4) NOT NULL auto_increment, 
`name` varchar(30) default NULL, 
`contact-details` varchar(30) default NULL, 
`street` varchar(30) default NULL, 
`postal-code` varchar(30) default NULL, 
`town` varchar(30) default NULL, 
`phone` varchar(30) default NULL, 
`email` varchar(30) default NULL, 
`homepage` varchar(30) default NULL, 
`summary` varchar(30) default NULL, 
`projects` varchar(30) default NULL, 
PRIMARY KEY (`id`) 
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=9 ; 

quelque chose comme ça cadrerait les besoins ..

Mise à jour; merci beaucoup Lenzai pour la réponse rapide:

vous suggérer d'essayer quelque chose comme ceci:

$url="http://..."; 
$xpath_query="/html/body/..."; 

/html/body/div[@id='main']/div[@id='wrapper']/div[@id='inner']/div[@id='marginalblock']/div[1]/p 
/html/body/div[@id='main']/div[@id='wrapper']/div[@id='inner']/div[@id='contentblock']/div/p[1]/strong 
/html/body/div[@id='main']/div[@id='wrapper']/div[@id='inner']/div[@id='contentblock']/div/p[2]/span[2]/span/b 
/html/body/div[@id='main']/div[@id='wrapper']/div[@id='inner']/div[@id='contentblock']/div/p[3]/span[2]/span/strong 
/html/body/div[@id='main']/div[@id='wrapper']/div[@id='inner']/div[@id='marginalblock']/div[1]/h6 

$ch=curl_init($url); 
$res=curl_exec($ch); 
$dom = new DOMDocument() 
$dom->loadHTML($res); 
$xpath=new DomXPath($dom); 
$node= $xpath->query($xpath_query)->item(0); 
echo $node->nodeValue; 

Je recourbées ici activé. Ce n'est pas un problème. Et les Xpaths je devrais entrer

dans cette ligne: $ xpath_query = "/ html/body/...";

Question: dois-je entrer dans tous les XPath qui sont mentionnés ci-dessus .. de 1 à 3 ... et ainsi de suite Comment cela ressemble enfin Pouvez-vous me aider - je suis très très nouveau php?

Réjouissez-vous de vos nouvelles !! Merci beaucoup à tous et à toute aide!

zéro

Répondre

1

essayer quelque chose comme ça

$url="http://..."; 
$xpath_query="/html/body/..."; 
$ch=curl_init($url); 
$res=curl_exec($ch); 
$dom = new DOMDocument() 
$dom->loadHTML($res); 
$xpath=new DomXPath($dom); 
$node= $xpath->query($xpath_query)->item(0); 
echo $node->nodeValue; 

vous avez juste besoin pour activer boucle dans votre php.ini

+0

Bonjour Lenzai, je recourbées ici activé. Ce n'est pas un problème. Et les Xpaths je devrais entrer dans cette ligne: $ xpath_query = "/ html/body/..."; ** Question: est-ce que je devrais entrer tous les Xpaths mentionnés ci-dessus .. ** de 1. à 3 ... et ainsi de suite ** Comment cela peut-il finalement vous aider? nouveau sur php? Réjouissez-vous de vos nouvelles !! Merci beaucoup à tous et à toute aide! – zero

+1

boucle sur les deux dernières lignes pour chaque xpath_query. pour nettoyer le code, vous devez extraire deux fonctions: 1 pour obtenir xpath à partir de l'URL, 1 pour appliquer une requête à l'objet xpath. –