当前位置: 首页 > 知识库问答 >
问题:

使用python从维基百科刮表?

许招
2023-03-14

我正在尝试从这个维基百科页面中获取表数据:https://en.wikipedia.org/wiki/2020_coronavirus_pandemic_in_Nepal我试过用熊猫警犬。Read Office HTML语法,但它对我试图擦除的表无效(证实了CavID-19在尼泊尔地区的病例)。

我试着用Beautifulsoup和pandas来搜集数据,但没有用

url = 'https://en.wikipedia.org/wiki/2020_coronavirus_pandemic_in_Nepal'
r = requests.get(url)
soup = BeautifulSoup(r.text,'html.parser')
table = soup.find('table', {'class': 'wikitable'})
dfs=pd.read_html(table)
dfs[0]

共有1个答案

步德宇
2023-03-14
import pandas as pd
import requests
from bs4 import BeautifulSoup

url = 'https://en.wikipedia.org/wiki/2020_coronavirus_pandemic_in_Nepal'
# dfs = pd.read_html("https://en.wikipedia.org/wiki/2020_coronavirus_pandemic_in_Nepal", flavor="lxml")
r = requests.get(url)
soup = BeautifulSoup(r.text, 'html.parser')
table = soup.find('table', {'class': 'wikitable'})
dfs = pd.read_html(str(table).replace("2;", "2"))
print(dfs[0])

这是可行的,您需要将表转换为字符串,以便read_html正常工作。

由于某种原因,rowspancolspan属性显示为“2;” 我找不到一个好方法来修复它-pd。read_html()不喜欢这样,所以我只使用。替换()

理论上,这应该可以完成同样的任务,但是更短、更容易,但与行span有相同的问题:

dfs = pd.read_html("https://en.wikipedia.org/wiki/2020_coronavirus_pandemic_in_Nepal", flavor="lxml")
print(dfs[0])  # whatever the index of the table is

这似乎是read\u html(熊猫版1.0.3)可能存在的错误。

 类似资料:
  • 问题内容: 例如,使用此Wikipedia转储: http://en.wikipedia.org/w/api.php?action=query&prop=revisions&titles=lebron%20james&rvprop=content&redirects=true&format=xmlfm 我是否可以使用现有的Python库来创建带有主题和值映射的数组? 例如: 问题答案: 看来您确实

  • 维基百科离线阅读器,支持索引官方dump!

  • 问题内容: 我需要获取任何电影的信息框的内容。我知道电影的名字。一种方法是获取Wikipedia页面的完整内容,然后解析它,直到找到并获取信息框的内容。 使用某些API或解析器,是否还有其他方法可以实现? 我正在使用Python和pywikipediabot API。 我也熟悉wikitools API。因此,如果有人具有与wikitools API相关的解决方案,请不要使用pywikipedia

  • 有办法从维基百科获得所有标题/摘录对吗?到那一刻,我发现了两种方法: 下载摘录转储,但它包含不完整/无效的摘录,我想是作为文章的第一行。 使用MediaWiki API请求摘录,但它非常慢,因为每个请求只能获得单个摘录(批量查询不适用于摘录): /w/api.php?action=query 我想获得摘录,因为它们是由MediaWiki API生成的,而不需要负担维基百科服务器。可能吗? 顺便说一

  • 在本章中,我展示了上一个练习的解决方案,并分析了 Web 索引算法的性能。然后我们构建一个简单的 Web 爬虫。 15.1 基于 Redis 的索引器 在我的解决方案中,我们在 Redis 中存储两种结构: 对于每个检索词,我们有一个URLSet,它是一个 Redis 集合,包含检索词的 URL。 对于每个网址,我们有一个TermCounter,这是一个 Redis 哈希表,将每个检索词映射到它出

  • 我一直在尝试获取一个可能的结果列表(与在维基百科中搜索时得到的结果相同)和一个小的文章摘要,通常是第一段。 到目前为止,我能得到的要么是标题列表: https://en.wikipedia.org/w/api.php?action=query 或单个页面的摘要: https://en.wikipedia.org/w/api.php?action=query 是否有可能以类似于此的形式组合这两个查询