提问人:edgestorm517 提问时间:12/31/2022 更新时间:12/31/2022 访问量:78
尝试使用 pd.read_html 提取信息并将数据导出到 Pandas 数据帧
Trying to use pd.read_html to extract information and export data to a Pandas dataframe
问:
我正在尝试从此维基百科页面上的表格中提取信息以自动收集数据。
网页链接:https://en.wikipedia.org/wiki/List_of_members_of_the_17th_Lok_Sabha
我正在使用 pd.read_html 将信息视为数据帧。我希望能够将模块导出到 .csv 文件,以便可以存储和分析数据。
当我将数据更改为传统数据帧时,我只能从第一个表中提取信息。我希望能够从表格上的所有页面中提取信息。
我能够为每个表创建一个数据帧,但这不是超级高效,也不是最佳实践。
这是我用来提取信息的代码,但它只返回一个表。
import pandas as pd
import requests
from bs4 import BeautifulSoup
members = []
wikiUrl = 'https://en.wikipedia.org/wiki/List_of_members_of_the_17th_Lok_Sabha'
page = requests.get(wikiUrl)
soup = BeautifulSoup(page.text, 'html.parser')
tables = soup.find_all('table', {'class': 'wikitable sortable'})
for table in tables:
members.append(table)
frame = pd.read_html(str(members))
df=pd.DataFrame(frame[0])
print(df)
我尝试只使用“frame”变量,这样我就可以做所有的表。
import pandas as pd
import requests
from bs4 import BeautifulSoup
members = []
wikiUrl = 'https://en.wikipedia.org/wiki/List_of_members_of_the_17th_Lok_Sabha'
page = requests.get(wikiUrl)
soup = BeautifulSoup(page.text, 'html.parser')
tables = soup.find_all('table', {'class': 'wikitable sortable'})
for table in tables:
members.append(table)
frame = pd.read_html(str(members))
df=pd.DataFrame(frame, dtype=object)
print(df)
df.to_csv('India 17th Lok Sabha.csv')
但它打印以下内容:
VisibleDeprecationWarning: Creating an ndarray from ragged nested sequences (which is a list-or-tuple of lists-or-tuples-or ndarrays with different lengths or shapes) is deprecated. If you meant to do this, you must specify 'dtype=object' when creating the ndarray.
values = np.array([convert(v) for v in values])
0
0 # Constituency ... Party ...
1 # Constituency Name Party ...
2 # Constituency ... Party ...
3 # Constituency ... Party ...
4 # Constituency Name Party ...
5 # Constituency Name Party ...
6 # Constituency ... Party ...
7 # Constituency ... Party ...
8 # Constituency ... Party ...
9 # Constituency ... Party ...
10 # Constituency ... Party ...
11 # Constituency ... Party ...
12 # Constituency ... Party ...
13 # Constituency ... Party ...
14 # Constituency ... Party ...
15 # Constituency Name Party ...
16 # Constituency Name Party ...
17 # Constituency ... Party ...
18 # Constituency ... Party ...
19 # Constituency ... Party ...
20 # Constituency ... Party ...
21 # Constituency Name Party ...
22 # Constituency ... Party ...
23 # Constituency ... Party ...
24 # Constituency Name Part...
25 # Constituency ... Party ...
26 # Constituency ... Party ...
27 # Constituency ... Party ...
28 # Constituency ... Party ...
29 # Constituency Name Party ...
30 # ... Part...
31 # Constituency ... Party ...
32 # Constituency Name Pa...
33 # Constituency Name ...
34 # Constituency Name ...
35 # Constituency Name Party ...
答:
0赞
Andrej Kesely
12/31/2022
#1
要将 Wiki 页面中的所有表加载到一个 DataFrame,可以使用以下示例:
import pandas as pd
import requests
from bs4 import BeautifulSoup
url = "https://en.wikipedia.org/wiki/List_of_members_of_the_17th_Lok_Sabha"
soup = BeautifulSoup(requests.get(url).content, "html.parser")
dfs = []
for table in soup.select("table.wikitable"):
name = table.find_previous("h2").span.text
df = pd.read_html(str(table))[0]
df["Region"] = name
df = df.drop(columns=["#", "Party"])
df = df.rename(columns={"Party.1": "Party"})
dfs.append(df)
df_out = pd.concat(dfs)
# print first 20 items from the DataFrame:
print(df_out.head(20).to_markdown(index=False))
指纹:
选区 | 名字 | 党 | 地区 |
---|---|---|---|
荒乐 (ST) | 戈迪蒂·马达维 | YSR大会党 | 安得拉邦 |
斯里卡库拉姆 | 拉姆·莫汉·奈杜·金贾拉普 | 泰卢固语德萨姆党 | 安得拉邦 |
维齐亚纳加拉姆 | 贝拉娜·钱德拉·塞哈尔 | YSR大会党 | 安得拉邦 |
维沙卡帕特南 | M. V. V. 萨蒂亚纳拉亚纳 | YSR大会党 | 安得拉邦 |
阿纳卡帕利 | 比塞蒂·文卡塔·萨蒂亚瓦蒂 | YSR大会党 | 安得拉邦 |
柿田 | 万加吉塔 | YSR大会党 | 安得拉邦 |
阿马拉普拉姆 (SC) | 钦塔·阿努拉达 | YSR大会党 | 安得拉邦 |
拉贾蒙德里 | 玛格尼·巴拉特 | YSR大会党 | 安得拉邦 |
纳拉萨普拉姆 | 拉古·拉玛·克里希纳·拉朱(Raghu Rama Krishna Raju) | YSR大会党 | 安得拉邦 |
埃鲁鲁 | 科塔吉里·斯里达尔 | YSR大会党 | 安得拉邦 |
马基利帕特南 | 瓦拉巴尼尼·巴拉苏里 | YSR大会党 | 安得拉邦 |
维杰亚瓦达 | 凯西尼·斯里尼瓦斯 | 泰卢固语德萨姆党 | 安得拉邦 |
贡图尔 | 加拉·贾亚德夫 | 泰卢固语德萨姆党 | 安得拉邦 |
纳拉萨拉奥佩特 | 拉武·斯里·克里希纳·德瓦拉亚卢 | YSR大会党 | 安得拉邦 |
巴帕特拉(南卡罗来纳州) | 南迪甘·苏雷什 | YSR大会党 | 安得拉邦 |
昂戈莱 | 马贡塔·斯里尼瓦苏鲁·雷迪 | YSR大会党 | 安得拉邦 |
南迪亚尔 | 波查·布拉马南达·雷迪 | YSR大会党 | 安得拉邦 |
库尔努尔 | 桑吉夫·库马尔(Sanjeev Kumar) | YSR大会党 | 安得拉邦 |
阿南塔普尔 | 塔拉里·兰盖亚 | YSR大会党 | 安得拉邦 |
印度教徒 | 库鲁瓦·戈兰特拉·马达夫 | YSR大会党 | 安得拉邦 |
评论