我正在為我的學校評分系統處理數據,并試圖弄清楚如何按類別提取數據。這是原始 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
提交
取消