2013-07-29 31 views
1

我想訪問一個名爲'鉛價值'類的div內的值。這是第二次出現這種類的值爲'鉛值'的div,所以我試圖通過第二個「lead-value」發生的父級下的子集來訪問這個特定的實例。如何訪問相同標籤的兩個條目中的第二個條目?

下面是HTML:

<td title="College Readiness is based on the percentages of 12th graders who were tested and passed AP&#174; exams. The maximum college readiness index value is 100.0." class="column-last column-even table-column-last table-column-even g_school_in_country_college_readiness_index_stacked cluetip"> 

        <div> 
    <p><div class="lead-value">100.0</div> 

所以我想使用的怪物類名"column-last column-even table-column-last table-column-even g_school_in_country_college_readiness_index_stacked cluetip"來獲取值,「100」。

我該如何使用BeautifulSoup來做到這一點?

+0

如果你確定要切換到'lxml',你可以使用一個簡單xpath expression'// div [@ class =「lead-value」] [2]'。 – alecxe

+0

不理想,但有幫助!我將研究有關BS如何支持lxml解析器的BS文檔。 – goldisfine

回答

3

例如,原來example.html的文件是這樣的:

<div class="lead-value">80.0</div> 
<div class="lead-value">100.0</div> 
<div class="lead-value">120.0</div> 
<div class="lead-value">140.0</div> 

的Python代碼是:

>>>inf = open("example.html") 
>>>content = inf.read() 
>>>inf.close() 
>>>soup = BeautifulSoup(content) 
>>>soup.findall('div',{'class':'lead-value'}) 
[<div class="lead-value">80.0</div>, <div class="lead-value">100.0</div>, <div class="lead-value">120.0</div>, <div class="lead-value">140.0</div>] 
>>>blocks = soup.findall('div',{'class':'lead-value'}) 
>>>print blocks[1].string 
100.0 
相關問題