gpt4 book ai didi

python - 无法将表写入 Pandas DataFrame

转载 作者:行者123 更新时间:2023-12-01 08:20:51 24 4
gpt4 key购买 nike

我正在尝试抓取一个网页,该网页包含一个嵌入 HTML 注释中的表格,该注释在执行某些 JavaScript 后加载。我使用 requests_html 和 render 来执行 JavaScript 并获取包括表格(实际上是页面上的第二个表格)的完整页面,效果很好。我遇到的问题是当我尝试将该表包含在 Pandas DataFrame 中时。

我尝试了几种不同的选项来尝试将数据转换为某种格式。渲染网页后,我尝试迭代表格,从中可以打印表格的 html 以及表格的文本,但是当我尝试迭代表格并将数据插入 Pandas DataFrame 时它失败。

from requests_html import HTMLSession

url = 'https://www.sports-reference.com/cfb/schools/iowa/2018/gamelog/'

session = HTMLSession()

r = session.get(url)

r.html.render()

table = r.html.find('table#defense')

defensive_game_list = []

for d_stats in table:
d_stats_sum = d_stats.find_all('td')
d_game_sum = [d_stats.text for d_stats in d_stats_sum]
defensive_game_list.append(d_game_sum)

df_defense = pd.DataFrame(deffensive_sum_final)

当我运行代码时,迭代后收到以下错误:

回溯(最近一次调用最后一次): 文件“”,第 2 行,位于AttributeError:“Element”对象没有属性“find_all”

我希望它能将表的文本放入一个空列表中,然后将该列表放入 DataFrame 中。

任何帮助将不胜感激。谢谢!

最佳答案

我想提两点。

a) 您想要的表已存在于 html 中。它只是被注释掉了。如果需要,您可以避免使用 requests-html 而只使用 requests。

b) 您可以使用read_html直接从 a 获取 DataFrame html 表格。

这里我只是获取评论并将其转换为 DataFrame

import requests
import pandas as pd
from bs4 import BeautifulSoup
from bs4 import Comment
url = 'https://www.sports-reference.com/cfb/schools/iowa/2018/gamelog/'
r = requests.get(url)
soup=BeautifulSoup(r.text,'lxml')
d_table=soup.find('div',id='all_defense').find(string=lambda text:isinstance(text,Comment))
df= pd.read_html(d_table)
print(df)

输出

[   Unnamed: 0_level_0     Passing            Rushing         ...         Unnamed: 23_level_0 Unnamed: 24_level_0 Unnamed: 25_level_0
Rk Date Unnamed: 2_level_1 ... Fum Int TO
0 1.0 2018-09-01 NaN ... 1 1 2
1 2.0 2018-09-08 NaN ... 1 0 1
2 3.0 2018-09-15 NaN ... 1 1 2
3 4.0 2018-09-22 NaN ... 0 0 0
4 5.0 2018-10-06 @ ... 0 4 4
5 6.0 2018-10-13 @ ... 0 2 2
6 7.0 2018-10-20 NaN ... 1 1 2
7 8.0 2018-10-27 @ ... 1 1 2
8 9.0 2018-11-03 @ ... 0 2 2
9 10.0 2018-11-10 NaN ... 0 2 2
10 11.0 2018-11-17 @ ... 1 3 4
11 12.0 2018-11-23 NaN ... 0 1 1
12 13.0 2019-01-01 N ... 1 2 3
13 NaN 13 Games NaN ... 7 20 27

[14 rows x 26 columns]]

关于python - 无法将表写入 Pandas DataFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54655926/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com