This is我使用的完整html
这是上述HTML的简化版本:
<table class="premium">
<tr class="retailer top-offer" data-pricer="47.84" saler-id="123">...</td>
<tr class="retailer" data-pricer="57.11" saler-id="234">...</td>
</table>
<table class="basic-supp">
<tr class="retailer top-offer" data-pricer="41.87" saler-id="456">...</td>
<tr class="retailer" data-pricer="58.12" saler-id="567">...</td>
</table>
从带有class=“basic supp”和TR标记的表以及data pricer=“…”属性的表中,我需要提取值
我在简化html上尝试了此方法:
from bs4 import BeautifulSoup
with open('file.html', 'r') as f:
contents = f.read()
soup = BeautifulSoup(contents, 'lxml')
tags = soup.find_all('tr')
for tag in tags:
print(tag.attrs['data-pricer'])
> 47.84
> 57.11
> 41.87
> 58.12
这几乎就是我所需要的,只是它从两个表中获取值,而不是从带有class=“basic supp”的表中获取值。知道怎么修吗
主要的问题是它在我上面发布的完整html上根本不起作用。错误:
print(tag.attrs['data-pricer'])
KeyError: 'data-pricer'
谁能给我一些建议吗
谢谢你抽出时间
顺便说一句,这甚至不是postExtracting an attribute value with beautifulsoup的复制品
只使用css选择器更容易:
或者,如果要使用极端列表理解,请使用一行:
无论哪种情况,输出都应为:
首先找到
<tr>
,然后用tr['data-pricer']
得到你想要的试试这个:
相关问题 更多 >
编程相关推荐