Frage

Ich bin mit curl Informationen aus Wikipedia abzurufen. Bisher hat ich in der Beschaffung von Grundtextinformationen erfolgreich gewesen, aber ich würde wirklich wollen, dass es in HTML abgerufen werden.

Hier ist mein Code:

$s = curl_init();       

$url = 'http://boss.yahooapis.com/ysearch/web/v1/site:en.wikipedia.org+'.$article_name.'?appid=myID';
curl_setopt($s,CURLOPT_URL, $url);
curl_setopt($s,CURLOPT_HEADER,false);
curl_setopt($s,CURLOPT_RETURNTRANSFER,1);

$rs = curl_exec($s);

$rs = Zend_Json::decode($rs);

$rs = ($rs['ysearchresponse']['resultset_web']);

$rs = array_shift($rs);
$article= str_replace('http://en.wikipedia.org/wiki/', '', $rs['url']);

$url = 'http://en.wikipedia.org/w/api.php?';
$url.='format=json';
$url.=sprintf('&action=query&titles=%s&rvprop=content&prop=revisions&redirects=1', $article);

curl_setopt($s,CURLOPT_URL, $url);
curl_setopt($s,CURLOPT_HEADER,false);
curl_setopt($s,CURLOPT_RETURNTRANSFER,1);

$rs = curl_exec($s);
//curl_close( $s );
$rs = Zend_Json::decode($rs);

$rs = array_pop(array_pop(array_pop($rs)));
$rs = array_shift($rs['revisions']);
$articleText = $rs['*'];

Doch der Text auf diese Weise ist nicht gut genug abgerufen angezeigt :( seine alle in dieser Art von Format

  

'' 'Aix-les-Bains' '' ist eine [[Gemeinden   Frankreich | Gemeinde]] in [[Savoie]]   [[Departments Frankreich | Abteilung]]   in den [[Rhône-Alpes]] [[Regionen   Frankreich | Region]] im Südosten   [[Frankreich]].

     

Es liegt in der Nähe des [[Lac du Bourget]],   {{Convert | 9 | km | mi | abbr = on}} auf der Schiene   nördlich von [[Chambéry]].

     

== Geschichte == '' Aix '' leitet sich von [[Latein]] '' Aquae '' (wörtlich:   „Wasser“; '' CF '' [[Aix-la-Chapelle]]   (Aachen) oder [[Aix-en-Provence]]), und   Aix war ein Bad während der [[Roman   Reich]], noch bevor es wurde umbenannt   ‚‘ Aquae Gratianae ‚‘ die gedenken   [[Kaiser Gratian]], der war   nicht weit entfernt ermordet, in   [[Lyon]] in [[383]]. zahlreiche Roman   bleibt überleben. [[Bild: IMG 0109 See   Promenade.jpg | miniatur | links | Lac du   Bourget Promenade]]

Wie erhalte ich den HTML-Code der Wikipedia-Artikel?


UPDATE: Danke, aber ich bin ein bisschen neu hier in diesem und im Moment bin ich versucht, eine XPath-Abfrage auszuführen, [wenn auch zum ersten Mal] und scheinen keine Ergebnisse zu erhalten . Ich brauche eigentlich hier ein paar Dinge wissen.

  1. Wie kann ich verlangen, nur einen Teil eines Artikels?
  2. Wie erhalte ich den HTML-Code des Artikels angefordert.

Ich ging durch diese url auf Daten Bergbau aus wikipedia - es legte eine Idee, eine zweite Anforderung an wikipedia api mit der abgerufenen wikipedia Text als Parameter zu machen, und das würde die hTML abrufen - auch wenn es nicht scheint bisher zu arbeiten :( - ich will nicht nur . packen Sie den ganzen Artikel als ein Chaos von hTML und Dump es im Grunde meine Anwendung, was sie tut, ist, dass Sie einige Orte und Städte Stift haben auf der Karte zeigte - Sie klicken Sie auf die Stadt Marker und es würde über ajax Details der Stadt beantragen, in einem benachbarten div gezeigt werden. Diese Informationen, die ich von wikipedia dynamisch bekommen möge. ich werde darum kümmern, um mit Artikeln zu tun, die nicht braucht später für eine bestimmte Stadt existieren, um auf nur sicherstellen, dass sein an diesem Punkt arbeiten.

Kennt jemand ein schönes Arbeitsbeispiel, das tut, was das heißt ich bin auf der Suche durch ausgewählte Teile eines Wikipedia-Artikel lesen und analysieren.


Nach der URL zur Verfügung gestellt - es sagt, ich sollte die wikitext auf die wikipedia api Standort Beitrag für das geparste HTML zurückzukehren. Das Problem ist, dass wenn ich die Informationen poste ich keine Antwort bekommen und stattdessen ein Fehler, dass ich Zugriff verweigert bin - aber wenn ich versuche, die wikitext enthalten als GET es ohne Problem analysiert. Aber es nicht natürlich, wenn ich waaaaay zu viel Text zu analysieren.

Ist das ein Problem mit dem Wikipedia-api? Weil ich habe kein Glück für zwei Tage bei ihm Hacking jetzt überhaupt: (

War es hilfreich?

Lösung

Die einfachste Lösung wäre wahrscheinlich die Seite zu packen selbst (zB http: //en.wikipedia. org / wiki / Kombination ) und extrahieren Sie den Inhalt <div id="content">, möglicherweise mit einer XPath-Abfrage.

Andere Tipps

Es gibt ein PEAR Wiki Filter, die ich verwendet habe, und es hat eine sehr gute Arbeit.

Text Wiki

Phil

Versuchen Sie, bei der Druckversion der Wikipedia-Artikel in Frage gewünscht wird.

Mit anderen Worten, ändern Sie diese Zeile des Quellcodes:

$url.=sprintf('&action=query&titles=%s&rvprop=content&prop=revisions&redirects=1', $article);

, um so etwas wie:

$url.=sprintf('&action=query&titles=%s&printable=yes&redirects=1', $article);

Disclaimer: Haben nicht getestet, und das ist nur eine Vermutung, wie Ihr API funktionieren könnte

.

Soweit ich es verstehe, wandelt die Wikipedia-Software den Wiki-Markup in HTML, wenn die Seite angefordert wird. So Ihre aktuelle Methode verwenden, müssen Sie mit den Ergebnissen befassen.

Ein guter Anfang ist der Mediawiki API . Sie können auch verwenden http://pear.php.net/package/Text_Wiki die zu formatieren Ergebnisse über cURL abgerufen werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top