首页 > 解决方案 > 如何从 Python 获取维基百科列表?

问题描述

我正在尝试编写一个程序,该程序从给定的专辑或配乐中获取歌曲列表。我一直在尝试通过使用 Wikipedia 来做到这一点,并且我发现了 2 个应该可以完成这项工作的模块:wikipediawikipedia-api。不幸的是,这些都没有得到我正在寻找的文章的元素,而是选择跳过它。显然,这对我根本没有帮助。所以我想知道的是:是否有一个模块可以从维基百科文章中获取列表?还是我必须使用原始的 Wikipedia API 并自己创建一个?我试图避免获取原始 html 并对其进行解析,因为它会很复杂并且可能是不必要的。

这是您可以尝试的一些示例代码,它使用维基百科模块(pip install wikipedia),但两个模块的错误相同。

import wikipedia
article = wikipedia.search("civil war soundtrack")[0] # I've already checked this, the searching is definitely accurate and isn't the source of the problem
pg = wikipedia.page(article)
print(pg.text)

当它打印文本时,它不是打印“曲目列表”部分下的表格,而是打印关于作曲家的行并完全跳过列表。

提前致谢!

注意:如果我不马上回复,那是因为我睡着了,这里已经很晚了,所以我会在早上检查所有内容

注意2:如果我在提问方面做错了什么,欢迎反馈!过去,我因问题而被否决,原因仍然不知道。

标签: pythonwikipediawikipedia-api

解决方案


我尝试了以下库,但它们都不支持表的提取:

  • 维基百科
  • 维基百科-api
  • 媒体维基API

人们遇到了和你一样的问题,一个人建议使用 MediaWikiAPI 和 Beautiful soup 来解决你的问题:

# load page 
mediawikiapi = MediaWikiAPI()
test_page = mediawikiapi.page(PageWithTables)

# scrape the HTML with BeautifulSoup to find tables
soup = BeautifulSoup(test_page.html(), 'html.parser')
tables = soup.findAll("table", { "class" : "wikitable" })

# select target table and apply custom function to export it to pandas
target_table = tables[0]
df_test = wikitable_to_dataframe(target_table)

来源:https ://github.com/goldsmith/Wikipedia/issues/111


推荐阅读