我想找到与给定主题相关的主题以及多个主题之间的关系程度。为此,我尝试提取主题的Wiki页面并使用主题的类别(在页面底部给出)构建分类法。我想使用维基百科的Python API(https://wikipedia.readthedocs.org/en/latest/code.html#api)。但是当我提取类别时,它也返回隐藏的类别,这些类别通常在Wiki页面上不可见。
import wikipedia
import requests
import pprint
from bs4 import BeautifulSoup
wikipedia.set_lang("en")
query = raw_input()
WikiPage = wikipedia.page(title = query,auto_suggest = True)
cat = WikiPage.categories
for i in cat:
print i
我知道另一种选择是使用刮刀。但我想使用API来做到这一点。
答案 0 :(得分:0)
你绝对可以使用API。只需将&clshow=!hidden
附加到您的类别查询中,如下所示:
http://en.wikipedia.org/w/api.php?action=query&titles=Stack%20Overflow&prop=categories&clshow=!hidden
(我在这里假设英语维基百科,但API无处不在。
另外,要明确一点:维基百科没有“Python API”,只有MediaWiki API,你可以从任何编程语言调用。在您的示例代码中,您使用a Python library(many之一)来访问Wikipedia API。此库似乎没有排除隐藏类别的选项。有关其他可能更灵活的Python库的列表,请参阅http://www.mediawiki.org/wiki/API:Client_code#Python。对于像你这样的简单任务,我个人非常喜欢wikitools。它看起来像这样:
from wikitools.wiki import Wiki
from wikitools.api import APIRequest
site = Wiki("http://fa.wikipedia.org/w/api.php")
site.login("username", "password")
params = {
"action": "query",
"titles": "سرریز_پشته",
"prop": "categories",
"clshow": "!hidden",
}
request = APIRequest(site, params)
result = request.query()
echo result