Как отделить теги, содержащие дочерние теги, от пустых в Beautiful Soup 4? - PullRequest
0 голосов
/ 25 декабря 2018
<a id="filepos10190"></a>
<a id="filepos10190">

<font size="6" color="#002984"><b>abashed </b></font> <div width="9"><i> 
<font color="green"> adj.</font></i></div> <div width="18"><font 
color="chocolate"><b>VERBS </b></font></div> <div width="27"><font 
color="gray">▪</font> <font color="darkslateblue"><b>be</b></font>, <font 
color="darkslateblue"><b>look</b></font></div> <div width="18"><font 
color="chocolate"><b>ADVERB </b></font></div> <div width="27"><font 
color="gray">▪</font> <font color="darkslateblue"><b>a little</b></font>, 
<font color="darkslateblue"><b>slightly</b></font>, <font 
color="darkslateblue"><b>etc.</b></font></div> <div width="27"><font 
color="gray">▪</font> <font color="darkslateblue"><b>suitably</b></font> 
</div> <div width="36"><font color="lightgray">▪</font> <span><font 
color="#595959">He glanced at Juliet accusingly and she looked suitably 
<u>~</u>.</font></span></div> 

</a>

Вот два якорных тега, один из которых не содержит ничего, а другой - с большим количеством детей.Как разделить эти два при очистке, если я хочу только один с тегами внутри?

Ответы [ 2 ]

0 голосов
/ 26 декабря 2018

Вы можете сделать это за один раз:

soup.find_all(lambda tag: tag.name == 'a' and tag.find())

tag.find() попытается найти любой и только один элемент внутри tag.

0 голосов
/ 25 декабря 2018
from bs4 import BeautifulSoup

content="""
<a id="filepos10190"></a>
<a id="filepos10190">

<font size="6" color="#002984"><b>abashed </b></font> <div width="9"><i>
<font color="green"> adj.</font></i></div> <div width="18"><font
color="chocolate"><b>VERBS </b></font></div> <div width="27"><font
color="gray">▪</font> <font color="darkslateblue"><b>be</b></font>, <font
color="darkslateblue"><b>look</b></font></div> <div width="18"><font
color="chocolate"><b>ADVERB </b></font></div> <div width="27"><font
color="gray">▪</font> <font color="darkslateblue"><b>a little</b></font>,
<font color="darkslateblue"><b>slightly</b></font>, <font
color="darkslateblue"><b>etc.</b></font></div> <div width="27"><font
color="gray">▪</font> <font color="darkslateblue"><b>suitably</b></font>
</div> <div width="36"><font color="lightgray">▪</font> <span><font
color="#595959">He glanced at Juliet accusingly and she looked suitably
<u>~</u>.</font></span></div>

</a>"""

soup = BeautifulSoup(content, 'html.parser')
tags = soup.find_all('a')  # just to filter your desire tag in this case anchor tag
filtered_tag = [i for i in tags if list(i.children)]  # results tags if it has child tags inside it otherwise empty list
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...