获取 python 中维基百科文章的类别
Get the category of wikipedia article in python
我正在使用下面提到的代码来检查维基百科页面是否存在。
term = "forensics"
a = urllib.request.urlopen("https://en.wikipedia.org/wiki/"+term).getcode()
print(a)
如果页面存在(即a == 200),我想获取页面的类别(即如果类别是计算机科学、工程等) .我们可以在维基百科中做到这一点 api 吗?
使用pywikibot,您可以获得页面的类别forensics
:
>>> import pywikibot as pw
>>> pw.Page(pw.Site('en'), 'forensics')
Page(Forensics)
>>> pw.Page(pw.Site('en'), 'forensics').exists()
True
>>> pw.Page(pw.Site('en'), 'forensics').categories()
<pywikibot.data.api.PageGenerator object at 0x7fea9d44ca90>
>>> list(pw.Page(pw.Site('en'), 'forensics').categories())
[Category(Category:Printworthy redirects), Category(Category:Redirects from short names), Category(Category:Redirects mentioned in hatnotes), Category(Category:Redirects with history)]
>>> [i.title() for i in list(pw.Page(pw.Site('en'), 'forensics').categories())]
[u'Category:Printworthy redirects', u'Category:Redirects from short names', u'Category:Redirects mentioned in hatnotes', u'Category:Redirects with history']
但我认为这不是您要查找的内容。 forensics
是一个 redirect page。您需要获取目标页面名称,并获取这个新页面的类别。
>>> pw.Page(pw.Site('en'), 'forensics').isRedirectPage()
True
>>> pw.Page(pw.Site('en'), 'forensics').getRedirectTarget()
Page(Forensic science)
另一个解决方案是解析讨论页,例如从 Talk:Forensic_science
获取 Law Enforcement
字符串和 {{WikiProject ...}}
中的其他字符串。使用 page.toggleTalkPage()
获取讨论页对应的新 Page 对象。但与类别不同的是,解析讨论页文本以获取项目名称并不是官方的 way/that 我可以建议你,尽管它可能会帮助你将它分类到更一般的类别中。
使用 Wikipedia-API 您的代码可能如下所示:
import wikipediaapi
wiki = wikipediaapi.Wikipedia('en')
page = wiki.page('forensics')
print(page.categories)
希望对您有所帮助。
编辑:我已经修复了 link。最后还有多余的]
。现在它指向 https://pypi.org/project/Wikipedia-API/
我正在使用下面提到的代码来检查维基百科页面是否存在。
term = "forensics"
a = urllib.request.urlopen("https://en.wikipedia.org/wiki/"+term).getcode()
print(a)
如果页面存在(即a == 200),我想获取页面的类别(即如果类别是计算机科学、工程等) .我们可以在维基百科中做到这一点 api 吗?
使用pywikibot,您可以获得页面的类别forensics
:
>>> import pywikibot as pw
>>> pw.Page(pw.Site('en'), 'forensics')
Page(Forensics)
>>> pw.Page(pw.Site('en'), 'forensics').exists()
True
>>> pw.Page(pw.Site('en'), 'forensics').categories()
<pywikibot.data.api.PageGenerator object at 0x7fea9d44ca90>
>>> list(pw.Page(pw.Site('en'), 'forensics').categories())
[Category(Category:Printworthy redirects), Category(Category:Redirects from short names), Category(Category:Redirects mentioned in hatnotes), Category(Category:Redirects with history)]
>>> [i.title() for i in list(pw.Page(pw.Site('en'), 'forensics').categories())]
[u'Category:Printworthy redirects', u'Category:Redirects from short names', u'Category:Redirects mentioned in hatnotes', u'Category:Redirects with history']
但我认为这不是您要查找的内容。 forensics
是一个 redirect page。您需要获取目标页面名称,并获取这个新页面的类别。
>>> pw.Page(pw.Site('en'), 'forensics').isRedirectPage()
True
>>> pw.Page(pw.Site('en'), 'forensics').getRedirectTarget()
Page(Forensic science)
另一个解决方案是解析讨论页,例如从 Talk:Forensic_science
获取 Law Enforcement
字符串和 {{WikiProject ...}}
中的其他字符串。使用 page.toggleTalkPage()
获取讨论页对应的新 Page 对象。但与类别不同的是,解析讨论页文本以获取项目名称并不是官方的 way/that 我可以建议你,尽管它可能会帮助你将它分类到更一般的类别中。
使用 Wikipedia-API 您的代码可能如下所示:
import wikipediaapi
wiki = wikipediaapi.Wikipedia('en')
page = wiki.page('forensics')
print(page.categories)
希望对您有所帮助。
编辑:我已经修复了 link。最后还有多余的]
。现在它指向 https://pypi.org/project/Wikipedia-API/