使用 BeautifulSoup 抓取 <span> 标签

时间:2021-03-07 23:10:42

标签: python html beautifulsoup

我正在尝试使用 BeautifulSoup 抓取页面,<script> 标签内有 <span> 标签,如下所示

<span data-link="{include tmpl='productCardOrderCount' ^~ordersCount=selectedNomenclature^ordersCount}"><script type="jsv#28_"></script>
<script type="jsv#27^"></script>
<script type="jsv#29_"></script>
<script type="jsv#26^"></script>
более 20 раз
<script type="jsv/26^"></script>
<script type="jsv/29_"></script>
<script type="jsv/27^"></script>
<script type="jsv/28_"></script>
</span>

但是由于 <script> 标签在 bs4 中没有被解析为 HTML,下面的代码返回 <span> 标签没有文本 ("более 20 раз")

rating = soup.find("p", {"class": "order-quantity"})

如何获取 <span> 标签内的文本?

1 个答案:

答案 0 :(得分:0)

文本位于标签 <script type="jsv#26^"> 下。您可以使用 soup.find("script", type="jsv#26^") 进行搜索。

from bs4 import BeautifulSoup


html = """
<span data-link="{include tmpl='productCardOrderCount' ^~ordersCount=selectedNomenclature^ordersCount}"><script type="jsv#28_"></script>
<script type="jsv#27^"></script>
<script type="jsv#29_"></script>
<script type="jsv#26^"></script>
более 20 раз
<script type="jsv/26^"></script>
<script type="jsv/29_"></script>
<script type="jsv/27^"></script>
<script type="jsv/28_"></script>
</span>
"""

soup = BeautifulSoup(html, "html.parser")

print(soup.find("script", type="jsv#26^").find_next(text=True).strip())

输出:

более 20 раз