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

如何在BeautifulSoup中获取span标签数据?无法匹配span类问题求助

问题原因分析
  • 你直接对lugares[0]这个单个BeautifulSoup Tag对象遍历,默认遍历的是它的所有子节点(包含无意义的换行文本节点等),这些子节点本身并不包含class="item"的span元素,自然匹配失败
  • 你不需要先遍历外层容器,应该直接从第一个items-container容器中提取所有符合条件的span.item元素,再逐个遍历这些span即可
解决方法
  1. 拿到第一个items-container容器后,直接调用find_all提取所有class="item"的span元素
  2. 遍历提取到的span列表,逐个获取文本和链接属性即可
修正后完整代码
from bs4 import BeautifulSoup
import requests

b=[]
i="https://www.vivanuncios.com.mx"
url = "https://www.vivanuncios.com.mx/s-renta-inmuebles/estado-de-mexico/v1c1098l1014p1"

encabezado = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36",'Accept-Language': 'en-US, en;q=0.5'}

page = requests.get(url,headers=encabezado)

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

lugares = soup.find_all("div",{"class":"items-container"})
# 先判断是否拿到了容器,避免索引报错
if lugares:
    first_container = lugares[0]
    # 直接提取容器下所有class为item的span
    item_spans = first_container.find_all("span", {"class": "item"})
    for span in item_spans:
        a_tag = span.find("a")
        # 避免a标签不存在报错
        if a_tag and a_tag.get("href"):
            locationlink = i + a_tag["href"]
            location = span.text.strip()
            b.append([location, locationlink])
# 打印结果验证
print(b)
补充优化点
  • 增加了非空判断,避免页面结构变化时出现索引报错、属性不存在报错
  • 对提取的地点文本加了strip()方法,去掉多余的换行和空格

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 14:54:04