如何用Python从Wikipedia下载Pandas数据框选项卡?

2024-10-03 11:18:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我想从Wikipedia.org上下载这个表,并将其作为Pandas数据框链接到Jupyter实验室:https://pl.wikisource.org/wiki/Polskie_powiaty_wed%C5%82ug_kodu_TERYT

只有一个表,并不复杂,我如何在Python中做到这一点


Tags: 数据httpsorgpandas链接wikijupyterwikipedia
2条回答

类型1:

只需使用pandas方法pd.read_html方法,并从中提取所需的df

import pandas as pd
res=pd.read_html("https://pl.wikisource.org/wiki/Polskie_powiaty_wed%C5%82ug_kodu_TERYT")
df=res[3]

类型2:

您可以同时使用requestbs4模块来查找表并将数据解析到pandas方法

import requests
from bs4 import BeautifulSoup
res=requests.get("https://pl.wikisource.org/wiki/Polskie_powiaty_wed%C5%82ug_kodu_TERYT")
soup=BeautifulSoup(res.text,"html.parser")

data=soup.find_all("table")[3]
df=pd.read_html(str(data))
df[0]

输出:

    Nazwa powiatu   TERYT
0   aleksandrowski  04 01
1   augustowski     20 01
.   .....          ..

在需要使用库搜索标记(我使用BeautifulSoup)之后,您需要使用请求库刮取HTML。 代码与此类似:

import requests
from bs4 import BeautifulSoup

URL = "https://pl.wikisource.org/wiki/Polskie_powiaty_wed%C5%82ug_kodu_TERYT"
page = requests.get(URL)

soup = BeautifulSoup(page.content, "html.parser")
results = soup.find("div", {"id":"mw-content-text"}).find("table",{"border":1}).find_all("td")
namelist = [results[i].text for i in range(0,len(results),2)]
numberlist = [results[i].text.strip('\n') for i in range(1,len(results),2)]

然后返回字符串类型的值。或者你可以得到所有的值​​作为一个列表。这是非常简单的转换成熊猫后

相关问题 更多 >