如何格式化或标准化维基百科标题以获取其维基百科页面ID(python)

时间:2016-02-12 11:26:04

标签: python wikipedia

简介

作为输入,我们有一个维基百科页面title,我们要为其提取维基百科page ID。为此我使用以下python代码:

#! /usr/bin/python
# -*- coding: utf-8 -*

import requests

if __name__ == "__main__": 
   url = "https://en.wikipedia.org/w/api.php?format=json&action=query&prop=extracts&exintro=&explaintext=&titles=Daniel cudmore businessman"
   result = requests.get(url).json()
   print result

问题

无法查找以下标题的维基百科页面ID:

1- daniel cudmore businessman

{u'batchcomplete': u'', u'query': {u'pages': {u'-1': {u'ns': 0, u'missing': u'', u'title': u'Daniel cudmore businessman'}}}}

页面的实际ID应为: 37030093

在这里,问题是所使用的维基百科页面标题是 Daniel Cudmore(商人),其中我的格式为 daniel cudmore商人

2- Prince david of georgia

{u'batchcomplete': u'', u'query': {u'normalized': [{u'to': u'Prince david of georgia', u'from': u'prince david of georgia'}], u'pages': {u'-1': {u'ns': 0, u'missing': u'', u'title': u'Prince david of georgia'}}}}

页面的实际ID应为: 3443932

在这里,维基百科页面的标题和我使用的标题是相同的。我找不到问题。

DBpedia SPARQL endpoint上:

SELECT ?id WHERE { 
     <http://dbpedia.org/resource/Daniel_Cudmore_(businessman)>  
     <http://dbpedia.org/ontology/wikiPageID> ?id}

SPARQL results

1 个答案:

答案 0 :(得分:1)

在后一个示例(“Prince_david_of_georgia”)中,您有不同的字符大小写(与“Prince_David_of_Georgia”相比),因此维基百科上也不存在特定页面

您可以使用Special Search - 网址:https://en.wikipedia.org/wiki/Special:Search/Prince_david_of_georgia获取请求的网页,然后检索ID

或建议列表: https://en.wikipedia.org/wiki/Special:Search/Daniel_Cudmore_businessman 您可以解析第一个条目。这可能是你的页面。做一些没有空格,大括号等的字符串比较来仔细检查 - 然后就像你一样检索ID。