Я пытаюсь очистить весь внутренний html от элементов <p>
на веб-странице с помощью BeautifulSoup. Есть внутренние теги, но мне все равно, я просто хочу получить внутренний текст.
Например, для:
<p>Red</p>
<p><i>Blue</i></p>
<p>Yellow</p>
<p>Light <b>green</b></p>
Как я могу извлечь:
Red
Blue
Yellow
Light green
Ни .string
, ни .contents[0]
делает то, что мне нужно. Также не .extract()
, потому что я не хочу указывать внутренние теги заранее - я хочу иметь дело с тем, что может произойти.
Есть ли способ "просто получить видимый HTML" в BeautifulSoup?
---- UPDATE ------
По совету, пытаясь:
soup = BeautifulSoup(open("test.html"))
p_tags = soup.findAll('p',text=True)
for i, p_tag in enumerate(p_tags):
print str(i) + p_tag
Но это не помогает - он печатает:
0Red
1
2Blue
3
4Yellow
5
6Light
7green
8