2017-05-05 39 views
1

我已經成功與beautifulsoup來分析以下數據:用美麗的湯解析。查找字符串(數字)span標籤外

<span class="price-currency">$</span>200.00</span>, <span class="j-original-price"> 
<span class="price-currency">$</span>1,000.00</span>, <span class="j-original-price"> 
<span class="price-currency">$</span>1,300.00</span>, <span class="j-original-price"> 
<span class="price-currency">$</span>550.00 <span class="price-type price-type--negotiable">Negotiable</span></span>, <span class="j-original-price"> 
<span class="price-currency">$</span>450.00 <span class="price-type price-type--negotiable">Negotiable</span></span>, <span class="j-original-price"> 
<span class="price-currency">$</span>50.00 <span class="price-type price-type--negotiable">Negotiable</span></span>, <span class="j-original-price"> 

現在我需要在每一行的中間來解析號碼。 我認爲它會使用nextSibling,但是失敗了。 我還注意到,一些數字後面跟着近距離標籤,一些數字後面跟着開闊的範圍標籤。

我如何用美麗的臉頰分析這些數字? 這是我得到了上面的數據:

span = soup("span", { "class" : "price-currency" }) 

感謝

回答

0

如果數據完全如您所示,那麼得到.next_sibling適用於我:

In [1]: from bs4 import BeautifulSoup 

In [2]: data = """ 
    ...: <span class="price-currency">$</span>200.00</span>, <span class="j-original-price"> 
    ...: <span class="price-currency">$</span>1,000.00</span>, <span class="j-original-price"> 
    ...: <span class="price-currency">$</span>1,300.00</span>, <span class="j-original-price"> 
    ...: <span class="price-currency">$</span>550.00 <span class="price-type price-type--negotiable">N 
    ...: egotiable</span></span>, <span class="j-original-price"> 
    ...: <span class="price-currency">$</span>450.00 <span class="price-type price-type--negotiable">N 
    ...: egotiable</span></span>, <span class="j-original-price"> 
    ...: <span class="price-currency">$</span>50.00 <span class="price-type price-type--negotiable">Ne 
    ...: gotiable</span></span>, <span class="j-original-price"> 
    ...: """ 

In [3]: soup = BeautifulSoup(data, "html.parser") 

In [4]: for item in soup("span", {"class": "price-currency"}): 
    ...:  print(item.next_sibling) 
    ...:  
200.00 
1,000.00 
1,300.00 
550.00 
450.00 
50.00 
+0

這對我也有效,謝謝!我愚蠢地沒有迭代,並且對使用next_sibling有點困惑。 –

0

嘗試通過您的數據循環,並從soup

[s.extract() for s in soup("span", {"class":"price-currency"})] 

提取.price-currency標記,然後從獲取所需的貨幣值:

list_price = soup("span", {"class":"j-original-price"}) 
print [pr.text for pr in list_price]