python - 如何从 Python 获取维基百科列表?
问题描述
我正在尝试编写一个程序,该程序从给定的专辑或配乐中获取歌曲列表。我一直在尝试通过使用 Wikipedia 来做到这一点,并且我发现了 2 个应该可以完成这项工作的模块:wikipedia和wikipedia-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:如果我在提问方面做错了什么,欢迎反馈!过去,我因问题而被否决,原因仍然不知道。
解决方案
我尝试了以下库,但它们都不支持表的提取:
- 维基百科
- 维基百科-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)
推荐阅读
- python - 线程函数和 Tkinter 进度条
- jquery - jQuery无法检测元素何时为空
- javascript - 如果单击离开页面,则调用函数 A,否则在我关闭浏览器窗口警报时调用函数 B
- android - android无法通过shadowsocks连接到本地域
- javascript - 动态创建的按钮没有出现
- php - 如何注入一组实现相同接口的服务,而不声明每个服务的接线?
- mysql - My SQL 5.6 - 如何防止读取先前 SQL 语句选择的行加上在给定列中共享重复值的任何其他行
- javascript - Javascript 模态裁剪现有图像?如何使用 js 函数遍历模态列表来处理它们?
- excel - What formula in one cell shows "break even" point in an mortgage amortization table?
- azure-devops - NuGet 还原任务失败(与 netcoreapp2.2 不兼容),但它在 Visual Studio 中有效