Shr*_*van 9 mediawiki wikipedia-api mediawiki-api mediawiki-extensions
我有一套完整的网址
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
Run Code Online (Sandbox Code Playgroud)
我想找到这些URL的维基百科pageid.我之前使用过Mediawiki API,但我无法弄清楚如何做到这一点.
我尝试通过获取lastindexof("/")的子字符串和最后一个字符从URL中提取页面标题,然后查询API以获取pageid.
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
Run Code Online (Sandbox Code Playgroud)
但问题是我的一些链接可能是重定向,因此子字符串可能并不总是页面的标题.
TL; DR:如何从URL中找到维基百科页面的pageid?
我不确定你所谓的"页面ID"是否是页面的标识号(例如英语维基百科主页的15580374 - 在左栏中的toobox中的"页面信息"中找到)或页面的标准化标题重定向已解决.下面的答案将回答两者.
您可以使用API action = query,例如https://en.wikipedia.org/w/api.php?action=query&titles=Main%20Page,其中您将找到最少的信息,其页面ID(数字).
您还可以管理更复杂的案例:标题规范化和/或重定向.标题化规范化(初始资本,下划线改为空格,各种unicode normalisations iirc等)包含在开箱即用中.对于重定向,您必须通过向URL添加"&redirects"来具体询问(请注意,双重重定向(=重定向的重定向)将不起作用,但不应该在那里).示例:https://en.wikipedia.org/w/api.php?action = query&titles = main_page&redirects
如果您需要更多信息,可以查看https://en.wikipedia.org/w/api.php?action=help&modules=query%2Binfo.
小智 5
您可以将 &indexpageids 添加到查询中。
例如
https://en.wikipedia.org/w/api.php?action=query&format=json&titles=Main%20Pages&indexpageids
或者,如果您同时正在寻找摘要,这里有一个更全面的示例链接:
然后,如果您解析 JSON,您将在 query 下看到一个名为 pageids 的属性