Вот простой код для помещения этой таблицы в кадр данных pandas:
from bs4 import BeautifulSoup
import pandas as pd
page = """<table cellpadding=4 cellspacing=1 border=0 align=center>
<tr class=hp >
<td nowrap>E(level) (MeV)</td>
<td nowrap>Jπ</td>
<td nowrap>Δ(MeV)</td>
<td nowrap>T<sub>1/2</sub></td>
<td nowrap>Decay Modes</td>
</tr>
<tr class=cp>
<td nowrap valign=top>0.0</td>
<td nowrap valign=top>4+</td>
<td nowrap valign=top> 18.2010</td>
<td nowrap valign=top>91.1 ms <i>5</i> </td>
<td nowrap valign=top> ε : 100.00 %<br> εp : 55.00 %<br> ε2p : 1.10 %<br> εα : 0.04 %<br> </td>
</tr>
</table>"""
soup = BeautifulSoup(page, "html.parser")
headers = soup.find('tr', {'class':'hp'}).findAll('td')
columns = []
for header in headers:
columns.append(header.text)
data = []
data_raw = soup.findAll('tr',{'class':'cp'})
for row in data_raw:
items = []
for element in row.findAll('td'):
items.append(element.text)
data.append(items)
df = pd.DataFrame(data, columns=columns)
print(df['T1/2'])
Вывод:
0 91.1 ms 5
Name: T1/2, dtype: object
Если то, что у вас есть в Режимах распада это несколько строк, вам может потребоваться добавить дополнительный код, чтобы обнаружить это (они разделены <br>
), или, если вы можете, исправить HTML, чтобы иметь разные строки в разных тегах строк и заголовок в теге заголовка