繁体   English   中英

如何查找具有特定值的文本BeautifulSoup python2.7

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM