beautifulGroup在多个<div>级别后获取内容

2024-09-30 04:39:04 发布

您现在位置:Python中文网/ 问答频道 /正文

如何使用BeautifulSoup获取两个“div”后的时间数据?在

<div>
<div>
6:00.00
</div>
</div>

我试过下面的代码

^{pr2}$

但这并不容易。在

完整的HTML示例:

<div class='row'>
<hr class='border zeropadding zeromargin'>
<div class='col-md-6 zeropadding'>
<label class='new_font'>Duration at Rated Power (HH:MM)</label>
</div>
<div class='col-md-6 new_font'>
<div></div>
<div>
<div>
6:00.00
</div>
</div>

</div>
</hr>
</div>
<div class='row'>
<hr class='border zeropadding zeromargin'>
<div class='col-md-6 zeropadding new_font'>
<label class='new_font'>Weblink1</label>
</div>
<div class='col-md-6 new_font'>
<div>
<div class='show_value'>
<a href="http://www.gillsonions.com/node/192" target='_new' class='boldbluelink'>http://www.gillsonions.com/node/192</a>
</div>
</div>

它来自https://www.energystorageexchange.org/projects/2

谢谢你的帮助。在

第二个问题:

我还想从

<input id='size_in_kw' type='hidden' value='1500'>

我试过了,但似乎不完整:

value = soup.find('input', {'id': 'size_in_kw'}).get('value')

Tags: divhttpnewvaluewwwhrcolmd
3条回答

对于你的第二个问题:

if "kW" in item.text:
    itemval = item.find_parent().find_next_sibling().text.strip()
    output.append(itemval)

试着用这个方法来获得你想要的时间:

import requests
from bs4 import BeautifulSoup

page = requests.get("https://www.energystorageexchange.org/projects/2") 
soup = BeautifulSoup(page.content, 'lxml')
for item in soup.select("label.new_font"):
    if "HH:MM" in item.text:
        itemval = item.find_parent().find_next_sibling().text.strip()
        print(itemval)

输出:

^{pr2}$

至少可以说,div.div选择器太模糊了。在

因为从显示的内容来看,您将获得“Duration at Rated Power(HH:MM)”字段值,因此我将首先找到与字段格式匹配的label,然后找到与字段格式匹配的find the next文本节点:

label = soup.find("label", text="Duration at Rated Power (HH:MM)")
value = label.find_next(text=re.compile(r"\d+:\d+")).strip()
print(value)  # prints 6:00.00

(别忘了导入re模块)

相关问题 更多 >

    热门问题