2014-05-12 60 views
1

這是我使用soup.findAll如何在HTML中提取元素的內容?

myAdds = soup.findAll("div", {"class" : "data"}) 

<div class="data"> 
    <img src="/page1/page2/Images/pic.png" height="13" width="13"> 
    &nbsp; SOME_TEXT 
    </img> 
</div> 

提取固定的HTML內容現在,我只想

SOME_TEXT 

爲我的最終結果。我不想從class =「data」中獲取tag和 元素。 我嘗試使用替換方法,但它沒有奏效。我怎樣才能得到想要的結果?

+0

Sometext –

+0

@sundarnatarajサンダーナタラジ:沒有,'img'是一個空標籤。 –

回答

2

你想使用Tag.next_sibling這裏,從所包含的圖片標籤:

>>> soup.find('div', class_='data').img.next_sibling 
u'\n \xa0 SOME_TEXT\n' 

在這種情況下,有沒有出現在你的標籤任何其他文字反正;您不妨使用Tag.get_text()方法:

>>> soup.find('div', class_='data').get_text() 
u'\n\n \xa0 SOME_TEXT\n' 

如果你有HTML與包含在的文本<img/>標籤,那麼這就是破HTML和不同的解析器將不同的處理這個問題:

>>> sample = '''\ 
... <div class="data"> 
... <img src="/page1/page2/Images/pic.png" height="13" width="13"> 
... &nbsp; SOME_TEXT 
... </img> 
... </div> 
... ''' 
>>> soup = BeautifulSoup(sample, 'html.parser') 
>>> soup.div 
<div class="data"> 
<img height="13" src="/page1/page2/Images/pic.png" width="13"> 
      SOME_TEXT 
    </img> 
</div> 
>>> soup = BeautifulSoup(sample, 'lxml') 
>>> soup.div 
<div class="data"> 
<img height="13" src="/page1/page2/Images/pic.png" width="13"/> 
      SOME_TEXT 

</div> 
>>> soup = BeautifulSoup(sample, 'html.parser') 
>>> soup.div 
<div class="data"> 
<img height="13" src="/page1/page2/Images/pic.png" width="13"> 
      SOME_TEXT 
    </img> 
</div> 

在所有這些情況下,Tag.get_text()都可以使用。

+0

我將所有結果存儲在myAdds中。對於myAdds的每個元素,我想提取「SOME_TEXT」。我現在不能用湯。它就像 '對於myAdds中的x: solve_for(x)' – impossible

+0

@Arewegood:是的,你可以;你有一個結果列表,包含BeautifulSoup元素。 '在myAdds中輸入x:print x.img.next_sibling'。 –

+0

請參閱編輯的html。我有'   SOME_TEXT'這個,我想提取「SOME_TEXT」。並通過使用x.img.next_sibling我得到「無」每個x。 – impossible

0
abc=""" 
<div class="data"> 
    <img src="/page1/page2/Images/pic.png" height="13" width="13"> 
    &nbsp; SOME_TEXT 
</div> """ 


from BeautifulSoup import BeautifulSoup as BS 
s=BS(abc,convertEntities=BS.HTML_ENTITIES) 
s.text 

u'SOME_TEXT' 
+0

BeautifulSoup 3多年前已停產;你必須假設用戶最近使用BeautifulSoup 4。 –

+0

另外,不要僅僅在用戶沒有解釋的情況下轉儲代碼。請包括一些關於爲什麼代碼應該工作的說明。 –

0
from BeautifulSoup import BeautifulSoup 

VAR =""" 
<div class="data"> 
    <img src="/page1/page2/Images/pic.png" height="13" width="13"> 
    &nbsp; SOME_TEXT 
</div> 
""" 
myAdds = BeautifulSoup(VAR,convertEntities=BeautifulSoup.HTML_ENTITIES) 
print myAdds.text 
+0

我得到這個錯誤: :類型對象'BeautifulSoup'沒有屬性'HTML_ENTITIES' – impossible

+0

再次,BeautifulSoup 3已經停止*多年*現在。OP使用BeautifulSoup 4;在Web上發現的BeautifulSoup 3代碼重複片段沒有多少意義,沒有測試或顯示它們的工作方式。不要只將代碼轉儲到答案中,也不要使用遠遠落後的代碼。 –