Ich muss nur den ersten Absatz einer Wikipedia-Seite abrufen. Der Inhalt muss HTML-formatiert sein und auf meinen Websites angezeigt werden können (also KEIN BBCODE- oder WIKIPEDIA-Spezialcode!).
api
wikipedia
wikipedia-api
funkeln
quelle
quelle
Antworten:
Es gibt eine Möglichkeit, den gesamten "Intro-Bereich" ohne HTML-Analyse abzurufen! Ähnlich wie bei der Antwort von AnthonyS mit einem zusätzlichen
explaintext
Parameter können Sie den Text des Intro-Abschnitts im Klartext erhalten.Abfrage
Das Intro von Stack Overflow im Klartext abrufen:
https://en.wikipedia.org/w/api.php?format=json&action=query&prop=extracts&exintro&explaintext&redirects=1&titles=Stack%20Overflow
JSON-Antwort
(Warnungen entfernt)
Dokumentation: API: query / prop = Extrakte
Bearbeiten:
&redirects=1
Wie in den Kommentaren empfohlen hinzugefügt .quelle
$extract = current((array)$data->query->pages)->extract;
. Aber "Hinweis: Der Versuch, Eigentum von Nicht-Objekten zu erhalten" kommt immer wieder.Es gibt tatsächlich eine sehr schöne Requisite namens Extrakte , die für Abfragen verwendet werden kann, die speziell für diesen Zweck entwickelt wurden. Mit Auszügen können Sie Artikelauszüge (abgeschnittener Artikeltext) abrufen. Es gibt einen Parameter namens exintro , mit dem der Text im nullten Abschnitt abgerufen werden kann (keine zusätzlichen Elemente wie Bilder oder Infoboxen). Sie können Auszüge auch mit einer feineren Granularität abrufen, z. B. durch eine bestimmte Anzahl von Zeichen ( Austausch ) oder durch eine bestimmte Anzahl von Sätzen ( Ausdrücke ).
Hier ist eine Beispielabfrage http://en.wikipedia.org/w/api.php?action=query&prop=extracts&format=json&exintro=&titles=Stack%20Overflow und die API-Sandbox http://en.wikipedia.org/wiki/ Spezial: ApiSandbox # action = query & prop = extrahiert & format = json & exintro = & title = Stack% 20Overflow , um mehr mit dieser Abfrage zu experimentieren.
Bitte beachten Sie, dass Sie, wenn Sie den ersten Absatz speziell möchten, noch einige zusätzliche Analysen durchführen müssen, wie in der ausgewählten Antwort vorgeschlagen. Der Unterschied besteht darin, dass die von dieser Abfrage zurückgegebene Antwort kürzer ist als einige der anderen vorgeschlagenen API-Abfragen, da die API-Antwort zum Parsen keine zusätzlichen Elemente wie Bilder enthält.
quelle
Seit 2017 bietet Wikipedia eine REST-API mit besserem Caching. In der Dokumentation finden Sie die folgende API, die perfekt zu Ihrem Anwendungsfall passt. (wie es von der neuen Funktion " Seitenvorschau" verwendet wird )
https://en.wikipedia.org/api/rest_v1/page/summary/Stack_Overflow
Gibt die folgenden Daten zurück, mit denen ein Sommer mit einem kleinen Miniaturbild angezeigt werden kann:Standardmäßig folgen Weiterleitungen (damit dies
/api/rest_v1/page/summary/StackOverflow
auch funktioniert), dies kann jedoch deaktiviert werden?redirect=false
Wenn Sie die API von einer anderen Domäne zugreifen möchten , können Sie die CORS - Header mit Set
&origin=
(zB&origin=*
)Update 2019: Die API scheint weitere nützliche Informationen über die Seite zurückzugeben.
quelle
"other_tags" : "\"addr:country\"=>\"CW\",\"historic\"=>\"ruins\",\"name:nl\"=>\"Riffort\",\"wikidata\"=>\"Q4563360\",\"wikipedia\"=>\"nl:Riffort\""
Können wir den Extrakt jetzt von der QID erhalten?Mit diesem Code können Sie den Inhalt des ersten Absatzes der Seite im Klartext abrufen.
Teile dieser Antwort kommen von hier und damit von hier . Siehe MediaWiki - API - Dokumentation für weitere Informationen.
quelle
Ja da ist. Wenn Sie beispielsweise den Inhalt des ersten Abschnitts des Artikels Stapelüberlauf abrufen möchten , verwenden Sie eine Abfrage wie die folgende:
http://en.wikipedia.org/w/api.php?format=xml&action=query&prop=revisions&titles=Stack%20Overflow&rvprop=content&rvsection=0&rvparse
Die Teile bedeuten Folgendes:
format=xml
: Gibt den Ergebnisformatierer als XML zurück. Andere Optionen (wie JSON) sind verfügbar. Dies hat keinen Einfluss auf das Format des Seiteninhalts selbst, sondern nur auf das einschließende Datenformat.action=query&prop=revisions
: Informationen zu den Überarbeitungen der Seite abrufen. Da wir nicht angeben, welche Revision verwendet wird, wird die neueste verwendet.titles=Stack%20Overflow
: Informationen zur Seite abrufenStack Overflow
. Es ist möglich, den Text mehrerer Seiten auf einmal abzurufen, wenn Sie deren Namen durch trennen|
.rvprop=content
: Geben Sie den Inhalt (oder Text) der Revision zurück.rvsection=0
: Gibt nur Inhalte aus Abschnitt 0 zurück.rvparse
: Gibt den als HTML analysierten Inhalt zurück.Beachten Sie, dass dies den gesamten ersten Abschnitt zurückgibt, einschließlich Dinge wie Hatnoten („Für andere Zwecke…“), Infoboxen oder Bilder.
Für verschiedene Sprachen stehen mehrere Bibliotheken zur Verfügung, die die Arbeit mit API erleichtern. Es ist möglicherweise besser für Sie, wenn Sie eine davon verwenden.
quelle
&redirects=true
am Ende des Links wird sichergestellt, dass Sie zum Zielartikel gelangen, sofern einer vorhanden ist.Dies ist der Code, den ich gerade für eine Website verwende, die ich erstelle und die die führenden Absätze / Zusammenfassungen / Abschnitte 0 von Wikipedia-Artikeln abrufen muss. Dank der Magie geschieht dies alles im Browser (clientseitiges Javascript) von JSONP! -> http://jsfiddle.net/gautamadude/HMJJg/1/
Es verwendet die Wikipedia-API, um die führenden Absätze (Abschnitt 0 genannt) in HTML wie folgt abzurufen : http://en.wikipedia.org/w/api.php?format=json&action=parse&page=Stack_Overflow&prop=text§ion=0&callback=?
Anschließend werden der HTML-Code und andere unerwünschte Daten entfernt, sodass Sie eine saubere Zeichenfolge einer Artikelzusammenfassung erhalten. Wenn Sie möchten, können Sie mit ein wenig Optimierung ein "p" -Html-Tag um die führenden Absätze erhalten, aber im Moment gibt es nur eine neue Zeile Charakter zwischen ihnen.
Code:
quelle
Diese URL gibt eine Zusammenfassung im XML-Format zurück.
Ich habe eine Funktion erstellt, um die Beschreibung eines Schlüsselworts aus Wikipedia abzurufen.
quelle
Sie können Inhalte wie den ersten Absatz auch über DBPedia abrufen, das Wikipedia-Inhalte verwendet und daraus strukturierte Informationen (RDF) erstellt und diese über eine API verfügbar macht. Die DBPedia-API ist eine SPARQL-API (RDF-basiert), gibt jedoch JSON aus und ist recht einfach zu verpacken.
Als Beispiel hier ist eine supereinfache JS-Bibliothek namens WikipediaJS, die strukturierten Inhalt einschließlich einer Zusammenfassung des ersten Absatzes extrahieren kann: http://okfnlabs.org/wikipediajs/
Sie können mehr darüber in diesem Blog-Beitrag lesen: http://okfnlabs.org/blog/2012/09/10/wikipediajs-a-javascript-library-for-accessing-wikipedia-article-information.html
Den JS-Bibliothekscode finden Sie hier: https://github.com/okfn/wikipediajs/blob/master/wikipedia.js
quelle
Der
abstract.xml.gz
Dump klingt wie der, den Sie wollen.quelle
Wenn Sie nur nach dem Text suchen, den Sie dann aufteilen können, aber die API nicht verwenden möchten, besuchen Sie en.wikipedia.org/w/index.php?title=Elephant&action=raw
quelle
Mein Ansatz war wie folgt (in PHP):
$utf8html
Möglicherweise muss weiter gereinigt werden, aber das ist es im Grunde.quelle
Ich habe die Lösung von @Michael Rapadas und @ Krinkle ausprobiert, aber in meinem Fall hatte ich Probleme, je nach Großschreibung einige Artikel zu finden. Wie hier:
https://en.wikipedia.org/w/api.php?format=json&action=query&prop=extracts&exintro=&exsentences=1&explaintext=&titles=Led%20zeppelin
Hinweis Ich habe die Antwort mit abgeschnitten
exsentences=1
Anscheinend hat "Titelnormalisierung" nicht richtig funktioniert:
Ich weiß, dass ich das Kapitalisierungsproblem leicht hätte lösen können, aber es gab auch die Unannehmlichkeit, das Objekt in ein Array umwandeln zu müssen.
Da ich eigentlich nur den ersten Absatz einer bekannten und definierten Suche wollte (kein Risiko, Informationen aus anderen Artikeln abzurufen), habe ich es so gemacht:
https://en.wikipedia.org/w/api.php?action=opensearch&search=led%20zeppelin&limit=1&format=json
Beachten Sie in diesem Fall, dass ich die Kürzung mit gemacht habe
limit=1
Diesen Weg:
Aber wir müssen weiterhin vorsichtig mit der Großschreibung unserer Suche sein.
Weitere Informationen: https://www.mediawiki.org/wiki/API:Opensearch
quelle