微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何通过API获取维基百科表格的章节标题

如何解决如何通过API获取维基百科表格的章节标题

如何通过 API 获取维基百科中国君主列表的各个表的部分标题Xia dynasty (夏朝) (2070–1600 BC)Shang dynasty (商朝) (1600–1046 BC)Zhou dynasty (周朝) (1046–256 BC) 等?我使用下面的代码连接:

from pprint import pprint
import requests,wikitextparser

r = requests.get(
    'https://en.wikipedia.org/w/api.PHP',params={
        'action': 'query','titles': 'List_of_Chinese_monarchs','prop': 'revisions','rvprop': 'content','format': 'json',}
)
r.raise_for_status()
pages = r.json()['query']['pages']
body = next(iter(pages.values()))['revisions'][0]['*']
doc = wikitextparser.parse(body)
print(f'{len(doc.tables)} tables retrieved')

han = doc.tables[5].data()
doc.tables[6].data()

doc.tables[i].data() 只返回表值,没有其 <h2> 部分标题。我希望 API 向我返回与返回的 83 个表中的每一个相对应的标题字符串列表。

原始网站:

https://en.wikipedia.org/wiki/List_of_Chinese_monarchs

解决方法

当它是您感兴趣的部分时,我不确定您为什么要使用 doc.tables。这对我有用:

for i in range(1,94,1):
    print(doc.sections[i].title.replace('[[','').replace(']]',''))

我得到了 94 个部分,而不是 83 个,虽然您可以使用 len(doc.sections) 这将包括另见等。必须有一种更优雅的方式来删除 wikilinks。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。