我想只使用维基百科的医学数据进行分析.我使用python进行抓取.我已经使用这个库在查询中按字搜索:
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
Run Code Online (Sandbox Code Playgroud)
并获得类别.
但是,我的问题反之亦然:
我想给出类别,例如:健康或医学术语,并获得所有这类文章.
我怎样才能做到这一点?
有API:Categorymembers,它记录了用法、参数,并给出了“如何检索给定类别中按标题排序的页面列表”的示例。它不会让您免于亲自浏览类别树(参见下文),但您会得到一个很好的入口点和机器可读的结果。
除了浏览类别层次结构之外,还可以使用搜索工具查找特定类别中的特定文章。要搜索特定类别中的文章,请在搜索框中输入 incategory:"CategoryName"。
可以添加“OR”来将一个类别的内容与另一类别的内容连接起来。例如,输入
Run Code Online (Sandbox Code Playgroud)incategory:"Suspension bridges" OR incategory:"Bridges in New York City"返回属于其中一个(或两个)类别的所有页面,如下所示。
请注意,使用搜索查找类别将找不到已使用模板分类的文章。此功能也不会返回子类别中的页面。
为了解决子类别问题,可以使用Special:CategoryTree页面。但是,该页面并未指向明显的文档。所以我认为<form>必须在页面源中手动搜索这些字段才能创建编程 API。