如何用BeautifulSoup提取表格中特定医院的分诊等待时间?
提取特定医院的分诊等待时间解决方案
没问题,我来帮你调整代码,只提取Sir Charles Gairdner Hospital的分诊等待时间。你的现有代码已经能获取到表格的所有行,只需要添加一个过滤逻辑,定位到目标医院的行,再提取对应的等待时间即可。
修改后的完整代码
import requests from bs4 import BeautifulSoup URL = 'https://www.health.wa.gov.au/emergencyactivity/EDdata/edsv/' headers = { "User-Agent": 'Mozilla/5.0 (X11; Linux x86_64; rv:76.0) Gecko/20100101 Firefox/76.0' } page = requests.get(URL, headers=headers) soup = BeautifulSoup(page.content, 'html.parser') table_rows = soup.find_all('tr') for tr in table_rows: td = tr.find_all('td') # 去除每个单元格文本的多余空格和换行,避免匹配失误 row = [i.text.strip() for i in td] # 跳过空行(比如表头分隔行或无数据的行) if not row: continue # 匹配目标医院名称(确保和表格里的名称完全一致) if row[0] == 'Sir Charles Gairdner Hospital': # 根据表格结构,分诊等待时间通常在第3列(索引为2,因为从0开始计数) # 如果实际列位置不对,先运行原代码看row的输出,调整索引即可 wait_time = row[2] print(f"Sir Charles Gairdner Hospital 分诊等待时间: {wait_time}")
关键说明
- 文本清洗:用
strip()处理每个单元格的文本,去掉换行、空格等多余字符,避免因为格式问题导致医院名称匹配失败。 - 空行过滤:判断
row是否为空,跳过表格里的空行或表头分隔行,防止索引错误。 - 列索引确认:如果运行后没得到正确的等待时间,先临时添加
print(row)代码,看看表格的列结构,再调整row[2]的索引值,找到对应分诊等待时间的列位置。
内容的提问来源于stack exchange,提问作者Vraj Barot
相关产品推荐
相关产品推荐

