gpt4 book ai didi

python - BeautifulSoup:在满足停止条件之前找到所有标签

转载 作者:太空宇宙 更新时间:2023-11-04 15:53:46 25 4
gpt4 key购买 nike

我正在尝试从 HTML 文件中提取类标签,但前提是它位于给定的停止点之前。我拥有的是:

import requests
from bs4 import BeautifulSoup

page = requests.get("https://mysite")
soup = BeautifulSoup(page.content, 'html.parser')
class_extr = soup.find_all("span", class_="myclass")

这行得通,但它找到 myclass所有 个实例,而我只想要 以下文本显示在 中的实例汤:

<h4 class="cat-title" id="55">
Title text N1
<small>
Title text N2.
</small>
</h4>

让这个 block 独一无二的是 Title text N 行,尤其是 Title text N2. 行。之前有很多 cat-title 标签,所以我不能用它作为停止条件。

围绕这个 block 的代码如下所示:

...
<div class="myc">
<a class="bbb" href="linkhere_893">
<span class="myclass">Text893</span>
<img data-lazy="https://link893.jpg"/>
</a>
</div>
<div class="myc">
<a class="bbb" href="linkhere_96">
<span class="myclass">Text96</span>
<img data-lazy="https://link96.jpg"/>
</a>
</div>
</div><!-- This closes a list that starts above -->
<h4 class="cat-title" id="55">Title text N1 <small> Title text N2.</small></h4>
<div class="list" id="55">
<div class="myc">
<a class="bbb" href="linkhere_34">
<span class="myclass">Text34</span>
<img data-lazy="https://link34.jpg"/>
</a>
</div>
<div class="myc">
...

在上面和下面继续。

我该怎么做?

最佳答案

尝试使用 find_all_previous() :

import requests
from bs4 import BeautifulSoup

page = requests.get("https://mysite")
soup = BeautifulSoup(page.content, 'html.parser')
stop_at = soup.find("h4", class_="cat-title", id='55') # finds your stop tag
class_extr = stop_at.find_all_previous("span", class_="myclass")

这将在第一个 <h4 class='cat-title', id=55> 处停止如果有多个则标记。

引用:Beautiful Soup Documentation

关于python - BeautifulSoup:在满足停止条件之前找到所有标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47724241/

25 4 0