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

Python爬取图片时报soup、url未定义NameError问题排查求助

问题排查与修复方案

报错根因

  • soup未定义:soup是你在get_all_images函数内部定义的局部变量,作用域仅局限于该函数内部,全局代码中直接调用soup.find_all无法访问到该变量,因此触发NameError
  • url未定义:url是get_all_images的入参,同样属于函数局部作用域的变量,你在全局代码中调用urljoin时没有定义对应的全局url变量,因此触发报错

修复代码

你需要把图片提取、地址拼接的逻辑收敛到get_all_images函数内部,或者调用函数拿到对应返回值后再做后续处理,参考实现如下:

import requests
from bs4 import BeautifulSoup as bs
from urllib.parse import urljoin
from tqdm import tqdm

def get_all_images(url):
    """
    返回指定页面下所有图片的绝对URL
    """
    soup = bs(requests.get(url).content, "html.parser")
    img_url_list = []
    for img in tqdm(soup.find_all("img"), "Extracting images"):
        img_url = img.attrs.get("src")
        if not img_url:
            continue
        # 拼接为绝对URL
        img_url = urljoin(url, img_url)
        img_url_list.append(img_url)
    return img_url_list

# 调用示例
target_page_url = "替换为你要爬取的页面URL"
all_image_urls = get_all_images(target_page_url)
# 后续可以对all_image_urls做其他处理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 10:06:02