2013-06-02 140 views
3

我想要用第一個標籤獲得第一個標籤後,用美麗的標籤。在標籤之後獲取標籤?

假設我有這樣的:

<span class="number">5</span> 
<span class="b">xxx</span><span class "number">10</span> 

我能得到一個正則表達式第二。數數,這將是非常堅實的。但我們都知道正則表達式不應該解析html,所以我用beautifulsoup來做這件事。我目前正在與

soup('span', {'class': 'number'})[1].string 

這樣做,但,如果在另一span.number是一個我想,這將打破之前的代碼插入,因爲我需要的就是[2]。

有什麼辦法可以使用beautifulsoup來獲得第一個span.number AFTER span.b?

回答

3

你可以使用next_sibling<span class="b">後獲得下一個標籤:如果您使用BeautifulSoup版本3

import bs4 as bs 


content = '''<span class="number">5</span> 
<span class="b">xxx</span><span class "number">10</span>''' 

soup = bs.BeautifulSoup(content) 
print(soup('span', {'class': 'b'})[0].next_sibling) 
# <span class="">10</span> 

print(soup('span', {'class': 'b'})[0].next_sibling.string) 
# 10 

,等效屬性稱爲nextSibling