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

爬取HYDAC商品页图片链接时遇AttributeError问题求助

问题分析与解决

错误原因

你遇到的AttributeError: 'NoneType' object has no attribute 'find_all',本质是代码中soup.find('div', attrs={'class':'...'})没有找到匹配的元素,返回了None,后续调用images.find_all()自然触发错误。

可能的触发因素

  1. 页面动态渲染:目标网站的图片容器可能是通过JavaScript动态生成的,requests.get()只能获取静态HTML源码,无法拿到JS加载后的页面结构。
  2. 选择器过于精确:你使用的class属性字符串包含多个类名,BeautifulSoup的attrs={'class': 'xxx yyy'}会严格匹配完整的class属性值,但实际页面中类名顺序可能变化、或额外添加了其他类,导致匹配失败。

解决方案

方案1:处理动态渲染页面(用Selenium)

如果页面依赖JS加载图片容器,改用Selenium获取浏览器渲染后的完整页面:

from selenium import webdriver
from bs4 import BeautifulSoup

# 初始化浏览器驱动(需提前安装对应浏览器的driver)
driver = webdriver.Chrome()
driver.get('https://www.hydac.com/shop/en/1250064#simple-downloads')

# 获取渲染后的页面源码
soup = BeautifulSoup(driver.page_source, 'html.parser')

# 改用宽松的类匹配,只保留关键类名
images_container = soup.find('div', class_='fotorama__stage__frame')
if images_container:
    all_images = images_container.find_all('img')
    for image in all_images:
        src = image.get('src')
        if src:
            print(src)

driver.quit()

方案2:优化静态页面选择器(用Requests)

如果静态页面中存在图片,调整选择器逻辑,同时添加空值判断:

import requests
from bs4 import BeautifulSoup

# 添加请求头模拟浏览器,避免被反爬拦截
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'
}
r = requests.get('https://www.hydac.com/shop/en/1250064#simple-downloads', headers=headers)
soup = BeautifulSoup(r.text, 'html.parser')

# 先找到图片所在的父级容器,再遍历内部img标签
fotorama_stage = soup.find('div', class_='fotorama__stage')
if fotorama_stage:
    all_images = fotorama_stage.find_all('img')
    for image in all_images:
        src = image.get('src')
        if src:
            print(src)

关键注意事项

  • 所有find()操作后必须加非空判断,避免None引发后续错误;
  • 爬取网站时建议添加User-Agent等请求头,降低被反爬拦截的概率;
  • 若网站有反爬机制,可能需要添加请求延迟、使用代理等策略。

内容的提问来源于stack exchange,提问作者Bar oo.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 18:15:38