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

如何遍历同class的div列表并提取其中特定信息?

解决BeautifulSoup遍历同class div列表提取信息的问题

嘿,我看你在遍历同class的div列表提取信息时踩了坑,大概率是代码里的小细节出问题了——比如你把BeautifulSoup对象转成字符串这一步,直接破坏了后续解析的基础。我给你整理了修正后的完整代码,顺便说说常见的错误点:

首先,先把你的代码里的核心问题指出来:你写了soup1 = str(soup...),这会把可操作的BeautifulSoup节点对象变成纯文本字符串,之后根本没法用find_all这类方法去遍历子元素,这是很多初学者容易犯的错。

下面是修正后的完整代码,我还加了一些容错处理,避免因为页面结构变化或者某个元素缺失导致报错:

import requests
from bs4 import BeautifulSoup

url = 'https://sneakernews.com/release-dates/'
response = requests.get(url)
# 加上编码自动识别,避免中文乱码
response.encoding = response.apparent_encoding
soup = BeautifulSoup(response.text, "lxml")

# 定位到父容器,不要转成字符串!
popular_block = soup.find("div", {'class': 'popular-releases-block'})

# 先判断父容器是否存在,避免后续报错
if not popular_block:
    print("抱歉,没有找到目标容器,可能页面结构已经变化")
else:
    # 获取父容器内所有目标div(这里假设目标div的class是'popular-release-item',你可以根据实际页面调整)
    release_items = popular_block.find_all("div", class_='popular-release-item')
    
    # 遍历每个div提取信息
    for idx, item in enumerate(release_items, 1):
        # 提取球鞋名称,做存在性判断
        name = item.find('h3').get_text(strip=True) if item.find('h3') else '未获取到名称'
        # 提取发布日期
        date_tag = item.find('span', class_='release-date')
        date = date_tag.get_text(strip=True) if date_tag else '未获取到日期'
        # 提取图片链接
        img_tag = item.find('img')
        img_url = img_tag['src'] if img_tag else '未获取到图片链接'
        
        print(f"第{idx}条发布信息:")
        print(f"球鞋名称: {name}")
        print(f"发布日期: {date}")
        print(f"图片链接: {img_url}")
        print("-" * 30)

几个关键的注意点:

  • 不要随意转换BeautifulSoup对象为字符串:soup对象是可解析的节点结构,转成字符串后就失去了所有解析能力,这是你之前循环出错的核心原因之一。
  • 增加存在性校验:页面里的元素可能不是每个div都完整包含你要的信息,直接调用get_text()或者取属性会抛出AttributeError,所以用if判断先确认元素存在。
  • 先定位父容器再找子元素:先找到popular-releases-block这个父容器,再在里面找子div,比直接在整个页面找更精准,也避免拿到无关的元素。

如果你的目标div的class不是popular-release-item,可以右键页面检查元素,找到对应的class名称替换进去就行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:01:29