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

使用Beautiful Soup获取网页图片,部分图片无法保存的问题求助

解决方法

你打印出的'src'并不是有效的图片URL,这说明这些图片要么是懒加载机制(真实链接存在于其他属性而非src),要么是页面通过JavaScript动态渲染的内容——静态的requests请求只能获取页面初始HTML,无法执行JS加载后续内容。以下是具体解决步骤:

1. 检查并替换懒加载图片的属性

很多网站用懒加载优化加载速度,会把真实图片链接放在data-src、data-original这类data-*属性里,而src仅作为占位符(你的情况里可能占位符被设成了'src'字符串)。修改代码优先读取这些属性:

from urllib.parse import urljoin

# ... 原有代码 ...
for i,img in enumerate(images):
    try:
        # 优先取懒加载属性,再回退到src
        img_url = img.get('data-src') or img.get('data-original') or img.get('src')
        if not img_url:
            continue
        # 把相对路径转为绝对URL(避免无法访问的情况)
        img_url = urljoin(url, img_url)
        # 更精准的图片格式判断
        if img_url.lower().endswith(('jpg', 'jpeg', 'png', 'gif')):
            res = requests.get(img_url, headers=headers)
            # 用with语句自动关闭文件,避免资源泄漏
            with open(f"{name}/image_{i}.jpg", "wb") as f:
                f.write(res.content)
    except Exception as e:
        print(e)

2. 处理JS动态渲染的图片

如果图片是通过滚动、AJAX等JS行为加载的,requests无法获取到这些动态生成的内容,需要用能执行JavaScript的工具(比如Selenium):

from selenium import webdriver
from selenium.webdriver.common.by import By
from urllib.parse import urljoin
import requests
import time

driver = webdriver.Chrome()
driver.get(url)
# 等待页面完全加载,或者滚动到底部触发所有图片加载
time.sleep(3)  # 生产环境建议用显式等待,比如等待某个元素加载完成

images = driver.find_elements(By.TAG_NAME, 'img')
for i, img in enumerate(images):
    try:
        img_url = img.get_attribute('data-src') or img.get_attribute('src')
        if not img_url or not img_url.lower().endswith(('jpg', 'jpeg', 'png', 'gif')):
            continue
        img_url = urljoin(url, img_url)
        res = requests.get(img_url, headers=headers)
        with open(f"{name}/image_{i}.jpg", "wb") as f:
            f.write(res.content)
    except Exception as e:
        print(e)

driver.quit()

3. 完善原有代码的容错逻辑

  • 替换粗糙的img_url[-1]=="g"判断,改为匹配常见图片后缀,避免误判。
  • 用with语句管理文件,自动释放资源。
  • 处理相对路径转绝对路径,避免因URL不完整导致的请求失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 20:42:14