5

Ich habe eine Reihe von Voll Urls wieWikipedia Mediawiki API pageId von URL bekommen

http://en.wikipedia.org/wiki/Episkopi_Bay 
http://en.wikipedia.org/wiki/Monte_Lauro 
http://en.wikipedia.org/wiki/Lampedusa 
http://en.wikipedia.org/wiki/Himera 
http://en.wikipedia.org/wiki/Lago_Cecita 
http://en.wikipedia.org/wiki/Aspromonte 

Ich möchte wikipedia pageids für diese URLS zu finden. Ich habe die Mediawiki API schon früher benutzt, aber ich kann nicht herausfinden, wie ich das machen könnte.

Ich habe versucht, den Seitentitel aus den URLs zu extrahieren, indem ich einen Teilstring von lastindexof ("/") und das letzte Zeichen nehme und dann die API abfrage, um peidid zu erhalten.

http://en.wikipedia.org/wiki/Episkopi_Bay --> Episkopi_Bay 
http://en.wikipedia.org/wiki/Monte_Lauro --> Monte_Lauro 
http://en.wikipedia.org/wiki/Lampedusa -- > Lampedusa 
http://en.wikipedia.org/wiki/Himera --> Himera 
http://en.wikipedia.org/wiki/Lago_Cecita --> Lago_Cecita 
http://en.wikipedia.org/wiki/Aspromonte --> Aspromonte 

Aber das Problem ist, dass einige meiner Links könnten Umleitungen sein und damit der Teil vielleicht nicht immer der Titel der Seite sein.

TL; DR: Wie finde ich die Seitenkennung einer Wikipedia-Seite von einer URL?

Antwort

4

Ich bin nicht sicher, ob das, was Sie "Seiten-ID" nennen, die Identifikationsnummer der Seite ist (zB 15580374 für die englische Wikipedia-Hauptseite - gefunden auf "Seiteninformationen" in der Toobox in der linken Spalte) Normalisierter Titel einer Seite mit umgeleiteten Weiterleitungen Die Antwort unten beantwortet beide.

Sie können die API action = query verwenden, z. https://en.wikipedia.org/w/api.php?action=query&titles=Main%20Page wo Sie minimale Informationen finden, deren Seiten-ID (Nummer).

Sie können auch komplexere Fälle verwalten: Titelnormalisierung und/oder Weiterleitungen. Titel-Normalisierung (Anfangskapital, Unterstriche in Leerzeichen geändert, verschiedene Unicode-Normalisierungen usw.) ist standardmäßig enthalten. Für Weiterleitungen müssen Sie spezifisch fragen, indem Sie "& Redirects" zur URL hinzufügen (beachten Sie, dass doppelte Redirects (= Redirect einer Weiterleitung) nicht funktionieren, aber das sollte nicht da draußen sein). Beispiel: https://en.wikipedia.org/w/api.php?action=query&titles=main_page&redirects

Wenn Sie weitere Informationen benötigen, können Sie https://en.wikipedia.org/w/api.php?action=help&modules=query%2Binfo betrachten.

+0

Danke für die Antwort. Ich weiß über beide Methoden Bescheid, aber keiner hilft mir. In beiden Antworten benötige ich einen page_title, mit dem ich arbeiten kann. Ich habe keinen page_title, ich habe nur die URL. Hier liegt das Problem. URLs können nicht mit Teilzeichenfolgen in page_titles übersetzt werden. Auch page_titles können nicht-englischen UTF8-kodierten Text enthalten.Was nicht notwendigerweise in der URL vorhanden ist und sich als ein Bündel von transliteriertem Text zeigt. –

+0

Ok. Sie müssen also zuerst die Teilzeichenfolge wie beschrieben extrahieren und dann die API aufrufen, um den Titel zu normalisieren und die Weiterleitungen aufzulösen (sogar mit% -kodierten Titeln wie https://ar.wikipedia.org/w/api.php?action=) query & prop = info & titles =% D9% 86% D8% A7% D8% B3% D8% A7), und bei nicht lateinischen Zeichen muss die zurückgegebene Zeichenfolge in UTF8 codiert werden (zB für das französische Wort "Café" der Die API gibt "title" zurück: "Caf \ u00e9", wobei "é" Unicode U + E9 ist. – Seb35

0

Wenn Sie nur die URL haben, und wissen nichts über das Wiki, kann man nicht davon ausgehen, dass der Teil nach dem letzten / ist der Titel der Seite, wie MediaWiki Seiten Namen may contain/. Stattdessen werden Sie durch Abfrage der Siteinfo API beginnen müssen, wie folgt aus:

https://www.mediawiki.org/wiki/API:Siteinfo 

In der Erwiderung query.general.server und query.general.articlepath kombiniert werden Sie die URL-Struktur geben, und query.general.script geben Ihnen die scriptpath. Abhängig davon, woher Ihre URLs kommen, benötigen Sie sie, um das Standardformular //mywiki/scriptpath/index.php?title=Namespace:Foo/Bar und das kurze URL-Formular //mywiki/articlepath/Namespace:Foo/Bar für einen Artikel mit dem Namen Foo/Bar zu berücksichtigen.

Zu allem Überfluss kann der Schrägstrich im "article name" Teil des Namens oder ein Trennzeichen für eine Unterseite sein, abhängig von den Einstellungen dieses Namespace!

Wenn Sie die URL-Syntax der Wikis zur Hand haben, beantwortet @ Seb35 bereits alle Ihre Fragen.