这当然是可能的。我会稍微笼统地回答,因为我怀疑您只想处理 HTML 块。
首先,获取一个指向td
元素,
td = soup.find('td')
现在,请注意,您可以获得该元素的子元素的列表,
>>> td_kids = list(td.children)
>>> td_kids
['\n This\n ', <a class="tip info" href="blablablablabla">is a first</a>, '\n sentence.\n ', <br/>, '\n This\n ', <a class="tip info" href="blablablablabla">is a second</a>, '\n sentence.\n ', <br/>, 'This\n ', <a class="tip info" href="blablablablabla">is a third</a>, '\n sentence.\n ', <br/>, '\n']
该列表中的一些项目是字符串,一些是 HTML 元素。至关重要的是,有些是br
元素。
您可以首先通过查找将列表拆分为一个或多个列表,
isinstance(td_kid[<some k>], bs4.element.Tag)
对于列表中的每个项目。
然后,您可以遍历每个子列表,通过将它们变成汤来重复替换标签,然后获取这些子列表的子列表。最终,您将拥有几个仅包含 BeautifulSoup 所谓的“可导航字符串”的子列表,您可以像往常一样操作它们。
将元素连接在一起,然后我建议您使用正则表达式消除空格sub
像这样:
result = re.sub(r'\s{2,}', '', <joined list>)