2012-10-27 66 views
2

一些HTML代碼來解析標籤包含了一些dt標籤,如如下:使用beautifulsoup一些文字

<dt>PLZ:</dt> 
<dd> 
8047 
</dd> 

我想找到dt標籤與文本PLZ:以下的dd標籤的文本。根據文件我想以下幾點:

number = BeautifulSoup(text).find("dt",text="PLZ:").findNextSiblings("dd") 

text上面的字符串,但我得到的是一個空的列表,而不是我找的(當然是字符串)的數量。也許我誤解了文檔?

+0

我打賭'PLZ:'ISN不匹配(也許你太嚴格了?)。要進行調試,可以嘗試將'PLZ:'減少到最小 - 如果它匹配任何內容,請添加一些'PLZ:',直到獲得所需內容。 –

+0

PLZ:實際上是匹配的。即「BeautifulSoup(text).find(」dt「,text =」PLZ:「)''返回一個打印爲」PLZ:「的對象。只有最後一步似乎不起作用。或者至少在我嘗試這種方式時不起作用。 – Alex

回答

2

所以只是嘗試:

from BeautifulSoup import BeautifulSoup 

text = """ 
<dt>PLZ:</dt> 
<dd> 
8047 
</dd>""" 

number = BeautifulSoup(text).find("dt",text="PLZ:").parent.findNextSiblings("dd") 
print BeautifulSoup(''.join(number[0])) 

,或者如果你有FindNext中找到嘗試:

number = BeautifulSoup(text).find("dt",text="PLZ:").parent.findNext("dd").contents[0] 
0

這爲我工作:

from BeautifulSoup import BeautifulSoup 

text = '''<dt>PLZ:</dt> 
<dd> 
8047 
</dd>''' 


BeautifulSoup(text).find("dt",text="PLZ:").parent.findNextSiblings('dd')