如何使用BeautifulSoup获取特定标签后的所有文本?

3

我有以下HTML(截断):

<p>
 Quant à Madame O., si elle a retrouvé un emploi depuis juin 2016 lui permettant de percevoir un salaire mensuel net de 1.780,50 euros (pièce 38 de l'intimée)...
</p>
<div class="faits">
 <p>
  Sur la résidence habituelle des enfants communs et les droits de visite et d'hébergement
 </p>
</div>
<p>
 Les mesures d'investigation réalisées, aussi bien l'enquête sociale que l'expertise psychologique familiale…
 <div class="motifs">
  La Cour observe en outre que le juge des enfants de Toulon, dans sa dernière décision en date du 31 octobre 2016 (pièce 85 de l'appelant) a ordonné, en l'absence de situation de danger, un non lieu à assistance éducative.
 </div>
 <div class="motifs">
  Il est confirmé dans ce jugement que les enfants sont décrits comme spontanés, complices...
 </div>
</p>
<p>
 Par ailleurs il convient de maintenir le lien entre les enfants et leur père mais aussi d'adapter le droit de visite et d'hébergement de Monsieur Z. aux contraintes résultant de l'éloignement géographique entre les domiciles parentaux. La décision du premier juge sera donc confirmée sauf à préciser, par dispositions nouvelles, les points suivants :…
</p>

在文档中我有几个 <div class="motifs"> ,目标是获取最后一个 <div class="motifs"> 后面的所有文本。换句话说,我想要获取从“Par ailleurs il convient…”到末尾的所有文本。
我通过以下方式找到了最后一个 <div class="motifs">last_marked = soup.find_all('div', {'class': 'motifs'})[-1]last_marked 后面获取所有文本应该怎么做呢?

你想要找到最后一个(last_marked)之后的所有<<p>>标签吗?还是你想要整个剩余的HTML?另外,last_marked 找到的文本是以“ Il est c..”开头而不是“Par ailleurs il convient”。 - MendelG
1
请发布有效的HTML。 - QHarr
1个回答

2

有一个方法恰好可以做到这一点,要查找特定元素后的所有标签,可以使用find_all_next()方法:

这些方法使用.next_elements迭代文档中在它之后的所有标签和字符串。

soup = BeautifulSoup(html, "html.parser")
last_marked = soup.find_all('div', {'class': 'motifs'})[-1]

for tag in last_marked.find_all_next("p"):
    print(tag)

是的,那个很好用!非常感谢。 - Chen Chen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接