刮削表只返回“tbody”,不返回tbody的内容

2024-04-24 19:35:08 发布

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

我正试图从这个网站上名为“燃料混合图”的表格中提取数据:https://www.iso-ne.com/isoexpress/ 我正在使用beauthoulsoup来读取HTML并提取下面列出的表,但是当我试图读取tbody的内容时,它将其输出为空。在

这是我的代码:

from bs4 import BeautifulSoup
from urllib.request import urlopen


pullPage = 'https://www.iso-ne.com/isoexpress/'

#query website and assign HTML to var page
page = urlopen(pullPage)

#parse HTML into var soup
soup = BeautifulSoup(page, 'html.parser')

#take <div> out of HTML name classifier and obtain value
fuelMix = soup.find('div', id='p_p_id_fuelmixgraphportlet_WAR_isoneportlet_INSTANCE_ZXnKx0ygssKj_')
fuelMixData = fuelMix.find('table', id = '_fuelmixgraphportlet_WAR_isoneportlet_INSTANCE_ZXnKx0ygssKj_table')




tbody = fuelMixData.find_all('tbody')
#for row in rows:
 #   data = row.find_all('td')
    #FMData.append(str(row.find_all('tr')[0].text))

print (tbody)

下面是HTML的相关部分:

^{pr2}$

目前,我的预期结果是简单地在tbody中打印所有数据。最后,我将阅读'tr'和'td'来创建数据数组(任何关于如何清理非日期/时间、燃料类型和值的字符串的想法都将不胜感激!)在

当我运行当前代码时,它只返回

^{3}$

如果我找到\u all('tr'),它只返回来自thead的值:

[<tr> <th style="text-align:left;">Date/Time</th> <th style="text-align:left;">Fuel</th> <th>MW</th> </tr>]

如果找到了\u all('td'),则返回一个空数组。在

提前谢谢你的帮助。在


Tags: 数据texthttpsidhtmlpageallfind
1条回答
网友
1楼 · 发布于 2024-04-24 19:35:08

模仿页面的POST请求,您将获得json格式的所有信息

from bs4 import BeautifulSoup as bs
import requests
import time

params = {
    '_nstmp_formDate' : int(time.time()),
    '_nstmp_startDate' : '06/02/2019',
    '_nstmp_endDate' : '06/02/2019',
    '_nstmp_twodays' : 'false',
    '_nstmp_chartTitle' : 'Fuel Mix Graph',
   '_nstmp_requestType' : 'genfuelmix',
   '_nstmp_fuelType' : 'all',
   '_nstmp_height' : 250,
   '_nstmp_showtwodays' : 'false'
}
r = requests.post('https://www.iso-ne.com/ws/wsclient', data = params).json()

写给df例如:

^{pr2}$

相关问题 更多 >