2016-03-01 74 views
1

我想檢查所有標籤的內部HTML文本內容。如何通過python和beautifulsoup找到各種網站標籤?

例如:

<a> 
    Hello World 
</a> 
<div> 
    Wow! 
</div> 

我想要得到的 'Hello World' 和 '哇!'。

我知道我可以使用.findChildren(['a','div'])。但是,真實的網站包含多種標籤,如'p','td'和'tr'。所以我認爲.findChildren不是解決問題的有效方法。

目前,我認爲遞歸和.find_all_next()可能幫助我處理這個問題。但我不知道如何去實現它。同樣的道理,我不確定我的想法是否可行。

請給我一些提示,以便我可以判斷我們的答案!

非常感謝您的幫助! :)

+0

二者必選其一['strings'或'stripped_strings'(http://www.crummy.com/software/BeautifulSoup/bs4/doc/ #strings-and-stripped-strings) – Selcuk

+0

@Selcuk我認爲你成功地解決了我的問題! –

+0

@Selcuk如果你願意,我認爲最好的答案是屬於你的! –

回答

2

您可以使用標籤內的stringsstripped_strings提取文本:

for string in soup.stripped_strings: 
    print(repr(string)) 

documentation

如果有一個標籤內不止一件事,你仍然可以看 只是字符串。使用.strings生成器。

這些字符串往往會有很多額外的空白,您可以通過使用.stripped_strings生成器來刪除這些空白。

或者你可以使用.get_text()方法:

print(soup.get_text()) 
+0

這真的有幫助!謝謝! –

1
from bs4 import BeautifulSoup 

response = "<a>Hello World</a><div>Wow!</div>" 
soup = BeautifulSoup(response, "lxml") 

print soup.text 

,其結果將是:

u'Hello WorldWow」

+1

謝謝你的幫助! –

+0

歡迎:)快樂幫忙 –