擅长:python、mysql、java
<p>可以使用<code>itertools.groupby</code>组合标题之间的所有链接文本:</p>
<pre><code>import itertools, re
from bs4 import BeautifulSoup as soup
d = [[i.name, i] for i in soup(content, 'html.parser').find_all(re.compile('b|a'))]
new_d = [[a, list(b)] for a, b in itertools.groupby(d, key=lambda x:x[0] == 'b')]
final_result = [[c.text for _, c in b] for a, b in new_d if not a]
</code></pre>
<p>输出:</p>
<pre><code>[['Title1', 'Title2'], ['Title3', 'Title4', 'Title5']]
</code></pre>
<p>最初的<code>find_all</code>调用用作“扁平器”,并创建一个包含目标标记名和内容的列表列表。<code>itertools.groupby</code>有一个键,它根据标记名是否用于粗体内容进行分组。因此,可以对<code>new_d</code>进行最后的传递,忽略<code>b</code>组,并从链接中提取文本。你知道吗</p>