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

如何使用BeautifulSoup提取HTML中指定span标签的文本内容

问题原因

你的现有实现存在两个问题:

  • 遍历span过程中每次都直接覆盖location变量,没有存储每次的有效结果,最后只能拿到最后一次循环的值
  • 没有过滤无意义的span,包含逗号、空白内容的分隔用span也被纳入了遍历范围,干扰有效内容提取
最优解决方案

因为目标span都带有语义化的itemprop属性,直接通过属性定位是最稳定的方案,不会因为后续HTML结构调整失效:

from bs4 import BeautifulSoup

job_soup = BeautifulSoup(browser.page_source, "lxml")
address_container = job_soup.find('div', id='job-location-name')
# 精准定位对应属性的span
city = address_container.find('span', itemprop='addressLocality').text.strip()
state = address_container.find('span', itemprop='addressRegion').text.strip()

# 得到所需结果
result = (city, state)

运行后result的值就是你需要的('Cupertino', 'California')。

遍历方案的修正写法

如果你一定要用遍历所有span的方式实现,修正后代码如下:

job_soup = BeautifulSoup(browser.page_source, "lxml")
locations = job_soup.find('div', id='job-location-name').find_all('span')
valid_loc = []
for span in locations:
    text = span.text.strip()
    # 过滤掉空文本和逗号
    if text not in ('', ','):
        valid_loc.append(text)
result = (valid_loc[0], valid_loc[1])

注意该方案依赖有效文本的顺序,稳定性不如属性定位方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 00:36:05