我正在为我的学校评分系统处理数据,并试图弄清楚如何按类别提取数据。这是原始 HTML:https ://pastebin.com/icbaemd7现在,我编写了一个 Python 脚本:html = driver.page_sourcesoup = BeautifulSoup(html, 'html.parser')chemData = ((soup.find_all('td')))content = []print chemDataprint ""for i in chemData: content.append(i.getText().split('</td')[0])for k in content: print (k)返回此结果:Safety Contract Signed1/18/13/2019Student Profile Sheet Turned In1/18/13/2019Polyatomic Ion Quiz10/108/19/2019HW Quiz Ch. 3 Target 63/38/27/2019HW Quiz (Ch. 3 Targets 1-6)12/168/28/2019Chapters 1 & 2 Formative Quiz15/178/21/2019Chapter 3 Formative Quiz23.5/259/5/2019Lab Report: Antifreeze Lab10/108/21/2019Types of Reactions Lab Report11/128/23/2019Hydrate Lab Report10/108/29/2019Lab Assessment - Types of Reactions Lab10/158/26/2019Lab Assessment: Hydrate Lab10/109/3/2019但是,我想将这些分类到 HTML 中存在的类别中。h3如果我使用而不是运行相同的脚本td,我会得到它们:HomeworkFormative QuizzesLab ReportsLab Assessments所以我的问题是:如何让它自动将实际作业分类到相应的类别中?任何帮助将不胜感激。谢谢!
2 回答
慕尼黑8549860
TA贡献1818条经验 获得超11个赞
尝试以下类似的方法,您可以在其中测试 h3 并制作字典键,否则从当前 dict[key] 下的行中添加值
from bs4 import BeautifulSoup as bs
html = '''yourHTML'''
soup = bs(html, 'lxml')
results = {}
for i in soup.select('h3, tr'):
if i.name == 'h3':
header = i.text
results[header] = []
else:
results[header].append(' '.join([n.text for n in i.select('td')]))
print(results)
BIG阳
TA贡献1859条经验 获得超6个赞
您的 html 无法正确呈现。然而,作为快速解决方案,查找包含 h3 标记和每个类别的表的父容器,并首先抓取父容器。例如,让我们假设 h3 标签和表格在一个 div 下。然后先刮掉div 标签,即 d = soup.findall('div')。然后通过 d 进一步循环以提取 h3 标签,然后是 tr/td。前任。d[0].findall('h3') d[0].findall('td') 等等..
添加回答
举报
0/150
提交
取消