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

Python使用BeautifulSoup提取目标元素每行颜色数据的技术求助

解决方法
  • 你之前用soup.find()拿到的是颜色容器,但直接遍历这个容器的子节点会包含很多空白文本节点,根本不是有效颜色项,所以才拿不到数据。得精准遍历容器里的每个颜色选项——页面里每个颜色块都是带color-swatch类的<a>标签,这才是你要找的对象。
  • 另外,页面里的颜色名称根本不是在<title>标签里(那是网页标题标签,跟颜色没关系),而是存在<a>标签的title属性,或者里面<img>的alt属性里。

修正后的代码示例:

import requests
from bs4 import BeautifulSoup

url = "https://www.hoka.com/en/us/mens-everyday-running-shoes/rincon-3/1119395.html"
# 记得加请求头,不然网站容易拦截你的请求
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"}
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, 'html.parser')

# 找到颜色容器
color_container = soup.find('div', class_="color-swatch-row type-swatch-image")
if color_container:
    # 遍历每个颜色选项的a标签
    for color_item in color_container.find_all('a', class_='color-swatch'):
        # 从title属性拿颜色名
        color_name = color_item.get('title')
        # 也可以从img的alt属性拿,效果一样
        # color_name = color_item.find('img').get('alt')
        if color_name:
            print(color_name.strip())
else:
    print("没找到颜色容器,检查页面结构是否变化")
要点提醒
  • 一定要加User-Agent请求头,不然Hoka的网站大概率会把你当成爬虫,返回空页面或者错误内容。
  • 别再找<title>标签了,页面里的颜色信息都存在元素的属性里,用.get('属性名')来获取。
  • 用find_all()定位具体的颜色项,而不是直接遍历容器子节点,避免拿到一堆没用的空白节点。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 21:06:19