gpt4 book ai didi

python - 让 BeautifulSoup 跳过我的 html 的一部分..或拆分它

转载 作者:行者123 更新时间:2023-12-01 05:12:37 25 4
gpt4 key购买 nike

<!DOCTYPE html>

<html class="client-nojs" dir="ltr" lang="en">
<body>
<h2><span class="mw-headline" id="Danish">Danish</span></h2>
<h3><span class="mw-headline" id="Noun">Noun</span><span class="mw-editsection">
</h3>
<p><strong class="Latn headword" lang="da">bringen</strong>blabla</span></p>
<ol>
<li><span class="form-of-definition">blabla</span></li>
</ol>
<hr/>
<h2><span class="mw-headline" id="German">German</span>blabla</span></h2>
<h3><span class="mw-headline" id="Noun">Noun</span><span class="mw-editsection">
</h3>
<h3><span class="mw-headline" id="Etymology">blabla</span></h3>
<p>From <span class="etyl"></p>
<h3><span class="mw-headline" id="Pronunciation">Pronunciation</span></h3>
<ul>
</body>
</html>

我需要BS忽略一切,直到<h2><span class="mw-headline" id="German"> 。最好在创建汤变量时将其拆分。 id="German"部分不是可变的,其他一切都是。

我尝试使用内置的 split-function,但这不起作用。还查看了这里的一些答案,但我没有从他们那里得到任何明智的信息。提示?

编辑:如您所见,有两个带有“名词”id 的跨度。我只需要“德语”后面的那个。我不知道如果不通过分割,BeautifulSoup 如何只找到第二个。

最佳答案

您可能可以通过 Element.find_all_next() method 找到您想要的内容,它允许您在给定元素之后搜索整个树:

start = soup.select('h2 span#German')[0]
headlines = start.find_all_next('span', id='Noun')

这将找到所有带有 id 的跨度属性设置为 Noun列于德国 <h2> 之后标签。

有对应的Element.find_next()方法只查找第一个下一个匹配项而不是全部。

换句话说,find_all_next()find_next()工作完全就像 find_all()find()但仅搜索超过给定起点的树。还有 find_all_previous() and find_previous() methods向另一个方向搜索。

演示:

>>> soup = BeautifulSoup('''\
... <!DOCTYPE html>
...
... <html class="client-nojs" dir="ltr" lang="en">
... <body>
... <h2><span class="mw-headline" id="Danish">Danish</span></h2>
... <h3><span class="mw-headline" id="Noun">Noun</span><span class="mw-editsection">
... </h3>
... <p><strong class="Latn headword" lang="da">bringen</strong>blabla</span></p>
... <ol>
... <li><span class="form-of-definition">blabla</span></li>
... </ol>
... <hr/>
... <h2><span class="mw-headline" id="German">German</span>blabla</span></h2>
... <h3><span class="mw-headline" id="Noun">Noun</span><span class="mw-editsection">
... </h3>
... <h3><span class="mw-headline" id="Etymology">blabla</span></h3>
... <p>From <span class="etyl"></p>
... <h3><span class="mw-headline" id="Pronunciation">Pronunciation</span></h3>
... <ul>
... </body>
... </html>
... ''')
>>> start = soup.select('h2 span#German')[0]
>>> start.find_all_next('span', id='Noun')
[<span class="mw-headline" id="Noun">Noun</span>]

关于python - 让 BeautifulSoup 跳过我的 html 的一部分..或拆分它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23846413/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com