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

如何使用urllib和BeautifulSoup爬取网页文本,无法获取b标签后续内容怎么办

爬取IMSDB剧本无法获取b标签后续文本解决方案

故障根因

  • 目标网站剧本采用固定排版逻辑:角色名称单独包裹在<b>标签内,角色对应的台词属于<b>标签的后续同级文本节点,并不包含在<b>标签内部,因此直接读取b_tag[索引].text只能获取到角色名称,无法拿到后续台词内容。
  • 返回内容前的大量空白是网页源码本身的排版缩进导致的,调用strip()方法即可快速去除首尾空白字符。

修正代码示例

import urllib.request as ureq
from bs4 import BeautifulSoup as bs

url = 'https://imsdb.com/scripts/Pulp-Fiction.html'

# 用with语句自动管理连接,无需手动关闭
with ureq.urlopen(url) as htmlfile:
    htmltext = htmlfile.read()

html_soup = bs(htmltext, 'html.parser')
b_tag = html_soup.find_all('b')

# 取第10个b标签对应的角色和台词
target_b = b_tag[10]
# 清理角色名首尾空白
role = target_b.text.strip()
# 获取后续非空的同级文本节点即为台词
dialogue = target_b.next_sibling.strip()

# 输出结果
print(f"角色:{role}")
print(f"台词:{dialogue}")

补充说明

  • 如果首次调用next_sibling返回空值,说明<b>标签和台词之间存在空白文本节点,多调用一次next_sibling即可,也可以直接用target_b.find_next_sibling(text=True, strip=True)自动过滤空白节点,直接获取台词内容。
  • 旧版BeautifulSoup中findAll方法已更名为find_all,建议使用新写法保证兼容性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 03:48:02