gpt4 book ai didi

python - 从 TD 中提取类别值 -

转载 作者:行者123 更新时间:2023-12-01 06:35:50 25 4
gpt4 key购买 nike

使用 BeautifulSoup4,我可以很好地缩小到一个表,并希望从中提取两件事:1)文本(我可以做)2)类(class)值(value)(我做不到)。

我正在摄取的 html 片段:

    <table id="allergen_list">
<thead>
<tr>
<th style="text-align: left;">Date</th>
<th style="text-align: right;">Fungus</th>
<th style="text-align: right;">Mountain<br />Cedar</th>
</tr>
</thead>
<tbody>
<tr><td style="text-align: left;">Jan 1</td><td style="text-align: right; color: #999999;" class="pollen_color_absent">0</td><td style="text-align: right; color: #999999;" class="pollen_color_absent">0</td></tr>
<tr><td style="text-align: left;">Jan 2</td><td style="text-align: right;" class="pollen_color_low">3,410</td><td style="text-align: right; color: #999999;" class="pollen_color_absent">0</td></tr>
<tr><td style="text-align: left;">Jan 3</td><td style="text-align: right;" class="pollen_color_low">3,023</td><td style="text-align: right; color: #999999;" class="pollen_color_absent">0</td></tr>
<tr><td style="text-align: left;">Jan 4</td><td style="text-align: right; color: #999999;" class="pollen_color_absent">0</td><td style="text-align: right; color: #999999;" class="pollen_color_absent">0</td></tr>
<tr><td style="text-align: left;">Jan 5</td><td style="text-align: right;" class="pollen_color_low">3,720</td><td style="text-align: right;" class="pollen_color_moderate">31</td></tr>
<tr><td style="text-align: left;">Jan 6</td><td style="text-align: right;" class="pollen_color_low">4,108</td><td style="text-align: right;" class="pollen_color_moderate">16</td></tr>
<tr><td style="text-align: left;">Jan 7</td><td style="text-align: right;" class="pollen_color_low">4,496</td><td style="text-align: right;" class="pollen_color_moderate">16</td></tr>
<tr><td style="text-align: left;">Jan 8</td><td style="text-align: right;" class="pollen_color_low">3,953</td><td style="text-align: right; color: #999999;" class="pollen_color_absent">0</td></tr>
<tr><td style="text-align: left;">Jan 9</td><td style="text-align: right; color: #999999;" class="pollen_color_absent">0</td><td style="text-align: right; color: #999999;" class="pollen_color_absent">0</td></tr>
</tbody>
</table>

代码片段:

    soup = BeautifulSoup(page, 'lxml')
...
for row in the_table.find_all('tr'):
pollen = row.find_all('th')
print(pollen)
cells = row.find_all('td')
print(cells)
num=len(cells) #or find in th..
if num>0:
for i in range(0,num):
print(cells[i].find(text=True))
print(cells[i].find("class", re.compile("^pollen_color")))
print("-*-*-*")

结果:

[<th style="text-align: left;">Date</th>, <th style="text-align: right;">Fungus</th>, <th style="text-align: right;">Mountain<br/>Cedar</th>]
[]
-*-*-*
[]
[<td style="text-align: left;">Jan 1</td>, <td class="pollen_color_absent" style="text-align: right; color: #999999;">0</td>, <td class="pollen_color_absent" style="text-align: right; color: #999999;">0</td>]
Jan 1
None
0
None
0
None
-*-*-*
[]
[<td style="text-align: left;">Jan 2</td>, <td class="pollen_color_low" style="text-align: right;">3,410</td>, <td class="pollen_color_absent" style="text-align: right; color: #999999;">0</td>]
Jan 2
None
3,410
None
0
None
-*-*-*

是我期待/希望看到“pollen_color_absent”等的地方。我怎样才能从 ???

中提取类

非常感谢向导的帮助/指导!

最佳答案

以下是如何使用 BeautifulSoup4 提取类的示例。

from bs4 import BeautifulSoup

html = '''<table id="allergen_list">
<thead>
<tr>
<th style="text-align: left;">Date</th>
<th style="text-align: right;">Fungus</th>
<th style="text-align: right;">Mountain<br />Cedar</th>
</tr>
</thead>
<tbody>
<tr><td style="text-align: left;">Jan 1</td><td style="text-align: right; color: #999999;" class="pollen_color_absent">0</td><td style="text-align: right; color: #999999;" class="pollen_color_absent">0</td></tr>
<tr><td style="text-align: left;">Jan 2</td><td style="text-align: right;" class="pollen_color_low">3,410</td><td style="text-align: right; color: #999999;" class="pollen_color_absent">0</td></tr>
<tr><td style="text-align: left;">Jan 3</td><td style="text-align: right;" class="pollen_color_low">3,023</td><td style="text-align: right; color: #999999;" class="pollen_color_absent">0</td></tr>
<tr><td style="text-align: left;">Jan 4</td><td style="text-align: right; color: #999999;" class="pollen_color_absent">0</td><td style="text-align: right; color: #999999;" class="pollen_color_absent">0</td></tr>
<tr><td style="text-align: left;">Jan 5</td><td style="text-align: right;" class="pollen_color_low">3,720</td><td style="text-align: right;" class="pollen_color_moderate">31</td></tr>
<tr><td style="text-align: left;">Jan 6</td><td style="text-align: right;" class="pollen_color_low">4,108</td><td style="text-align: right;" class="pollen_color_moderate">16</td></tr>
<tr><td style="text-align: left;">Jan 7</td><td style="text-align: right;" class="pollen_color_low">4,496</td><td style="text-align: right;" class="pollen_color_moderate">16</td></tr>
<tr><td style="text-align: left;">Jan 8</td><td style="text-align: right;" class="pollen_color_low">3,953</td><td style="text-align: right; color: #999999;" class="pollen_color_absent">0</td></tr>
<tr><td style="text-align: left;">Jan 9</td><td style="text-align: right; color: #999999;" class="pollen_color_absent">0</td><td style="text-align: right; color: #999999;" class="pollen_color_absent">0</td></tr>
</tbody>
</table>'''

soup = BeautifulSoup(html, 'html.parser')

tbody = soup.find('tbody')
rows = tbody.find_all('tr')
for row in rows:
cols = row.find_all('td')
for col in cols:
print(col.text)
if col.has_attr('class'):
print(col.get('class'))

关于python - 从 TD 中提取类别值 -,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59674979/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com