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

如何用BeautifulSoup优先抓取main标签内图片,无则抓取排除头尾的全部图片

基于BeautifulSoup的图片链接抓取方案修正

原代码存在的问题

  • 未通过soup对象调用find方法,直接写find('main')会触发报错
  • 用单个变量grabbedImages存储结果,循环结束后仅保留最后一个图片链接,无法收集全部目标数据
  • 分支逻辑未实现“排除header和footer标签内图片”的核心需求

修正后的完整代码

# 初始化列表存储抓取到的图片链接
grabbed_images = []

# 查找页面中的main标签
main_tag = soup.find('main')

if main_tag:
    # 抓取main标签内所有img的src属性
    for img in main_tag.find_all('img'):
        src = img.get('src')
        # 过滤空的src属性,避免无效数据
        if src:
            grabbed_images.append(src)
else:
    # 抓取页面中所有img标签,排除header和footer内的图片
    for img in soup.find_all('img'):
        # 检查当前img是否在header或footer标签的后代节点中
        if not img.find_parents(['header', 'footer']):
            src = img.get('src')
            if src:
                grabbed_images.append(src)

关键逻辑说明

  • 使用列表存储结果,避免单个变量覆盖数据
  • 用img.find_parents(['header', 'footer'])判断图片位置:返回空列表则说明该图片不在header或footer标签范围内
  • 增加空src过滤,避免收集到无效的空链接

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 08:43:28