[英]How to find text with a particular value BeautifulSoup python2.7
我有以下html:我正在尝试将以下数字另存为变量现在可用7,148.49,HatchBack,Good。 我遇到的问题是我无法将它们独立拉出,因为它们没有附加的类。 我想知道如何解决这个问题。 以下是html,然后是我没用的代码来解决此问题。
</div>
<div class="car-profile-info">
<div class="col-md-12 no-padding">
<div class="col-md-6 no-padding">
<strong>Status:</strong> <span class="statusAvail"> Available Now </span><br/>
<strong>Min. Booking </strong>7 Days ($148.89)<br/>
<strong>Style: </strong>Hatchback<br/>
<strong>Transmission: </strong>Automatic<br/>
<strong>Condition: </strong>Good<br/>
</div>
Python 2.7代码:-这给了我整个HTML!
soup=BeautifulSoup(html)
print soup.find("span",{"class":"statusAvail"}).getText()
for i in soup.select("strong"):
if i.getText()=="Min. Booking ":
print i.parent.getText().replace("Min. Booking ","")
您可以使用“ .next_sibling”导航至所需的文本,如下所示:
for i in soup.select("strong"):
if i.get_text(strip=True) == "Min. Booking":
print(i.next_sibling) #this will print: 7 Days ($148.89)
另请参见http://www.crummy.com/software/BeautifulSoup/bs4/doc/#going-sideways
使用class="car-profile-info"
在div
元素下找到所有强元素,并为找到的每个元素获取.next_siblings
直到遇到br
元素:
from bs4 import BeautifulSoup, Tag
for strong in soup.select(".car-profile-info strong"):
label = strong.get_text()
value = ""
for elm in strong.next_siblings:
if getattr(elm, "name") == "br":
break
if isinstance(elm, Tag):
value += elm.get_text(strip=True)
else:
value += elm.strip()
print(label, value)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.