如何从Python获取维基百科列表?

时间:2018-06-13 07:03:52

标签: python wikipedia wikipedia-api

我正在尝试编写一个程序,该程序可以从给定的专辑或音轨中获取歌曲列表。我一直试图通过使用维基百科来做到这一点,我发现了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:如果我在提出问题方面做错了什么,欢迎提出反馈意见!我过去一直在讨论问题,原因仍然没有找到。

1 个答案:

答案 0 :(得分:0)

我尝试过跟踪库,但没有一个支持提取表格:

  • 维基百科
  • 维基百科-API
  • MediaWikiAPI

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

# 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