gpt4 book ai didi

python - 使用 beautifulsoup 读取 html 标签属性时出错

转载 作者:太空宇宙 更新时间:2023-11-04 02:44:42 25 4
gpt4 key购买 nike

我正在尝试使用 beautifulsoup 根据数据属性读取和列出 td 中的文本

 tr=BeautifulSoup(str(input),'lxml')
tags=tr.findAll('td')
for t in tags:
if t.attrs['data-property']== 'OSVersion':
ver=t.text

这给了我没有细节的错误

KeyError: 'data-property'

请参阅以下示例 tr 提取为输入

<tr > 
<td class=" resizable reorderable" data-property="OSVersion">10.2.1</td>
<td class=" resizable reorderable" data-property="DisplayModel">iPad Mini 4 (64 GB Space Gray)</td>
<td class=" resizable reorderable" data-property="PhoneNumber"></td>
<td class="grid_customvariable_colsize resizable reorderable" data-property="DeviceCustomAttributeDetails"></td>
<td class=" resizable reorderable" data-property="DeviceTagDetails"></td>
<td class=" resizable reorderable" data-property="EnrollmentStatusName"> <div class="grid_resizable_col">Enrolled</div>
</td>
<td class=" resizable reorderable" data-property="ComplianceStatusName"> <div class="grid_resizable_col">Compliant</div>
</td>

<td class=" resizable reorderable" data-property="IMEI"></td>
<td class=" resizable reorderable" data-property="LocationGroupName">iOS</td>
<td class=" resizable reorderable" data-property="IsCompromisedYN">No</td>
<td class=" resizable reorderable" data-property="HomeCarrier">Not Reported </td>
<td class=" resizable reorderable" data-property="CurrentCarrier">Not Reported </td>
<td class=" resizable reorderable" data-property="WiFiIPAddress"></td>

<td class=" resizable reorderable" data-property="Notes"></td>
<td class=" resizable reorderable" data-property="WnsStatus"> <span>Disconnected</span>
</td>
<td class=" resizable reorderable" data-property="DmLastSeenTime"> <span class="icon arrow_down_stretched red">-</span>
</td>
</tr>

如果我按照下面的方式使用单个字典,它工作正常

d={'class': ['', 'resizable', 'reorderable'], 'data-property': 'FriendlyName'}
print d['data-property']

有人知道怎么解决吗?

谢谢

最佳答案

不需要弄乱 attrs:

from bs4 import BeautifulSoup as BS

html = """<tr >
<td class=" resizable reorderable" data-property="OSVersion">10.2.1</td>
<td class=" resizable reorderable" data-property="DisplayModel">iPad Mini 4 (64 GB Space Gray)</td>
<td class=" resizable reorderable" data-property="PhoneNumber"></td>
<td class="grid_customvariable_colsize resizable reorderable" data-property="DeviceCustomAttributeDetails"></td>
<td class=" resizable reorderable" data-property="DeviceTagDetails"></td>
<td class=" resizable reorderable" data-property="EnrollmentStatusName"> <div class="grid_resizable_col">Enrolled</div>
</td>
<td class=" resizable reorderable" data-property="ComplianceStatusName"> <div class="grid_resizable_col">Compliant</div>
</td>

<td class=" resizable reorderable" data-property="IMEI"></td>
<td class=" resizable reorderable" data-property="LocationGroupName">iOS</td>
<td class=" resizable reorderable" data-property="IsCompromisedYN">No</td>
<td class=" resizable reorderable" data-property="HomeCarrier">Not Reported </td>
<td class=" resizable reorderable" data-property="CurrentCarrier">Not Reported </td>
<td class=" resizable reorderable" data-property="WiFiIPAddress"></td>

<td class=" resizable reorderable" data-property="Notes"></td>
<td class=" resizable reorderable" data-property="WnsStatus"> <span>Disconnected</span>
</td>
<td class=" resizable reorderable" data-property="DmLastSeenTime"> <span class="icon arrow_down_stretched red">-</span>
</td>
</tr>"""

soup = BS(html)
tags=soup.findAll('td')
for t in tags:
if t['data-property'] == 'OSVersion':
ver=t.text
print(ver)

输出:

10.2.1

关于python - 使用 beautifulsoup 读取 html 标签属性时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45456476/

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