2012-07-17 83 views
2

我有一個HTML文件,該文件類似於這樣的東西:如何使用beautifulsoup提取嵌套標記結構中的屬性值?

<html> 
... 
<li class="not a user"> </li> 
<li class="user"> 
<a href="abs" ...> </a> 
</li> 
<li class="user"> 
<a href="bss" ...> </a> 
</li> 
... 
</html> 
鑑於上述輸入我想帶class =「用戶」解析裏的標籤,並獲得HREF的作爲輸出的值

。這可能在python中使用beautifulsoup?

我的解決辦法是:

data="the above html code snippet" 
soup=BeautifulSoup(data) 
listset=soup("li","user") 
for list in listset: 
    attrib_value=[a['href'] for a in list.findAll('a',{'href':True})] 

很顯然,我的地方,它只是列出了最近錨標記的href屬性值有一個錯誤。

+0

你爲什麼要在每個循環中重複設置attrib_value?每次迭代你都在做什麼? – 2012-07-17 00:33:18

+0

問題是當我想要一個屬性值列表時,我只是在每次迭代時重新分配! :P – abhixec 2012-07-17 19:19:22

回答

2

你的代碼沒問題。在listset中有三個元素 - 並且attrib_value會在循環的每次迭代中被覆蓋,因此在程序結束時,它只包含listset的最後一個元素(即bss)中的href值。

試試這個,而不是把所有的值:

attrib_value += [a['href'] for a in list.findAll('a',{'href':True})] 

和環路(attrib_value = [])之前初始化attrib_value爲空列表。

+0

啊... thankssssss很多..我知道我錯過了什麼:) – abhixec 2012-07-17 00:37:57

+0

不客氣 - 祝你好運。 – Ansari 2012-07-17 00:39:16

相關問題