我有一套像
这样的完整网址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
我想为这些网址找到 维基百科网页 。我之前使用过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
但问题是我的一些链接可能是重定向,因此子字符串可能并不总是页面的标题。
TL; DR:如何从网址中找到维基百科页面的pageid?
答案 0 :(得分:6)
我不确定你打电话是什么"页面ID"是页面的标识号(例如,英语维基百科主页面的15580374 - 在"页面信息"左栏中的toobox中找到)或已解析重定向的页面的标准化标题。下面的答案将回答两者。
您可以使用API action = query,例如https://en.wikipedia.org/w/api.php?action=query&titles=Main%20Page您将在其中找到最少的信息,其页面ID(数字)。
您还可以管理更复杂的案例:标题规范化和/或重定向。标题化规范化(初始资本,下划线改为空格,各种unicode normalisations iirc等)包含在开箱即用中。对于重定向,您必须通过添加"& redirects"来具体询问。到URL(请注意,双重重定向(=重定向的重定向)将不起作用,但不应该在那里)。示例: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。
答案 1 :(得分:3)
您可以在查询中添加&indexpageids。
例如
https://en.wikipedia.org/w/api.php?action=query&format=json&titles=Main%20Pages&indexpageids
或者如果您要同时查找摘要,请参见以下更全面的示例链接:
然后,如果您解析JSON,则会在查询下看到一个名为pageids的属性
答案 2 :(得分:0)
如果您只有URL,并且对wiki一无所知,则不能假设最后/
之后的部分是页面标题,因为MediaWiki页面名称为may contain {{ 1}}。相反,您必须首先查询siteinfo API,如下所示:
/
在回复中,https://www.mediawiki.org/wiki/API:Siteinfo
和query.general.server
合并将为您提供网址结构,query.general.articlepath
将为您提供scriptpath。对于名为query.general.script
的文章,根据您的网址来源,您需要展位,帐户的默认格式//mywiki/scriptpath/index.php?title=Namespace:Foo/Bar
和短网址格式//mywiki/articlepath/Namespace:Foo/Bar
。
更糟糕的是,“文章名称”中的斜杠可以是名称的一部分,也可以是子页面的分隔符,具体取决于该名称空间的设置!
如果您知道手头的wiki的url语法,@ Seb35已经回答了您的所有问题。
答案 3 :(得分:0)
使用action=query
进行API调用会给您文章的pageid
:
https://xx.wikipedia.org/w/api.php?action=query&format=json&titles=searched_title
提供类似JSON的
{
"batchcomplete": "",
"query": {
"pages": {
"xxxx": {
"pageid": xxxx,
"ns": 0,
"title": "searched_title"
}
}
}
}