You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

新手求助:用Python+BeautifulSoup提取网页指定文本后的内容

解决思路与代码示例

方法一:基于节点定位(推荐)

这种方式直接通过HTML结构定位目标内容,稳定性更强,不受网页换行变化影响。

步骤:

  • 修正请求URL(你当前代码里的URL是Aiuto,需要改成目标页面Allarme)
  • 找到包含Gittata:的<strong>标签
  • 获取该标签的下一个兄弟节点文本,就是目标内容

代码示例:

import requests
from bs4 import BeautifulSoup

url = "https://dungeonsanddragons.fandom.com/it/wiki/Allarme"
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')

# 定位包含"Gittata:"的strong标签
gittata_label = soup.find('strong', string='Gittata:')
if gittata_label:
    # 提取标签后的文本并去除多余空格
    gittata_value = gittata_label.next_sibling.strip()
    print(gittata_value)  # 输出结果:9 metri

方法二:按行提取(不推荐,稳定性差)

如果一定要用“打印第N行文本”的方式,可先拆分网页内容为行,再定位目标行并提取内容,但这种方式依赖网页源码的换行结构,一旦网页更新换行变化就会失效。

代码示例:

import requests
import re

url = "https://dungeonsanddragons.fandom.com/it/wiki/Allarme"
response = requests.get(url)
# 将网页内容按换行符拆分为行列表
lines = response.text.split('\n')

# 遍历找到包含"Gittata:"的行
target_line_idx = None
for idx, line in enumerate(lines):
    if 'Gittata:' in line:
        target_line_idx = idx
        break

if target_line_idx is not None:
    # 从目标行中用正则提取<strong>标签内的内容
    match = re.search(r'Gittata:</strong>\s*<strong>(.*?)</strong>', lines[target_line_idx])
    if match:
        print(match.group(1))  # 输出结果:9 metri

注意事项

  • 方法一的节点定位方式更健壮,优先使用;方法二仅作为特殊场景下的备选方案。
  • 确保请求的URL是目标页面Allarme,而非你代码里的Aiuto。

内容的提问来源于stack exchange,提问作者Luca Valdisturli

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 13:04:59