BeautifulSoup爬虫实战:批量下载图片

发布时间:2026/6/7 1:28:56

BeautifulSoup爬虫实战:批量下载图片 标签#Python爬虫 #BeautifulSoup #requests #图片爬虫 #网页解析阅读时长10min | 适用人群爬虫零基础、Python初学者一、前言合规提醒1.项目简介本文基于BeautifulSoup4 实现经典二级页面爬虫列表页→详情页→提取图片链接→批量下载本地以COS图集静态网页为实战案例完整还原爬虫标准开发流程抓网页→解析HTML→链接拼接→二进制保存图片是新手入门BS爬虫最优练手项目。2.爬虫法律合规提醒1. 仅用于个人技术学习禁止商用、批量大规模爬取、恶意压测网站服务器​2. 遵守网站 robots.txt 协议控制请求间隔不高频并发请求​3. 爬取内容仅限学习用途不传播、盗用网站版权图片违规后果自行承担。二、技术栈介绍库作用requestsHTTP请求库模拟浏览器访问网页获取HTML源码、下载图片二进制流beautifulsoup4HTML/XML解析库精准定位页面标签、提取链接、筛选数据Python内置open以二进制模式写入保存图片到本地环境安装打开终端执行pip安装依赖pip install requests beautifulsoup4三、爬虫业务流程爬虫采用两级抓取架构流程分4步1. 一级列表页请求访问COS图集分类页获取全部图集入口li列表​2. 解析详情页链接BS筛选classi_list list_n2标签提取子页面相对href​3. 拼接完整URL域名相对路径生成详情页绝对地址循环访问每个图集详情​4. 详情页提取图片解析详情页image_div容器内img标签拿到图片源地址二进制下载保存本地jpg文件。四、网页结构分析1.列表页结构目标URLCOS图集_COS套图_COS高清图片 - 优美图录所有图集条目统一存放于 li classi_list list_n2 ​每个li内部 a 标签 href 是相对路径需要拼接域名优美图录 - 专注超高清美女图片分享网站 变成完整URL2.详情页结构图集图片固定包裹在div classimage_div内部的img标签​img src图片完整URL即为原图下载地址直接GET请求即可获取图片资源。开发技巧写代码前优先F12查看网页DOM结构确定标签名、class类名是BS爬虫关键步骤。五、可运行代码5.1 分步代码讲解① 导入依赖、配置基础域名import requests from bs4 import BeautifulSoup domain https://www.umei.net url https://www.umei.net/tags/cos/ resp requests.get(url) resp.encoding utf-8 print(resp.text)运行结果!DOCTYPE html html head meta charsetUTF-8 meta nameviewport contentinitial-scale1.0,user-scalableno titleCOS图集_COS套图_COS高清图片 - 优美图录/title meta namekeywords contentCOS,COS图集_COS套图_COS高清图片 meta namedescription contentCOS的超清图片是由优美图录提供为用户提供与COS相关的图片欣赏/套图下载... link relstylesheet idstyle-css href/static/umei/css/style.css?ver2023.05.27 typetext/css mediaall / link relstylesheet idfont-awesome-css href/static/umei/css/font-awesome.min.css?ver1.0 typetext/css mediaall / script typetext/javascript src/static/umei/js/jquery.js?ver1.1/script !--[if lt IE 9] script src/static/umei/js/html5shiv.min.js/script ![endif]-- /head body classhome blog div classindex_header idnav div classheader_inner div classlogo a href/img src/static/umei/images/logo.png alt美图录 //a /div div classheader_menu ul li class a href/首页/a/li li class a href/i/最新/a/li li class a href/model/模特/a/li li class megamenu toke current-menu-itema href#热门标签/a ul classsub-menulia hrefhttps://www.meitule.com/tags/wangluomeinv/网络美女/a/li lia href/tags/qingchun/清纯/a/li ... !--首页幻灯片-- /body /html② 请求列表页生成BS解析对象③ 批量查找所有图集li标签main_page BeautifulSoup(resp.text, html.parser) a_list main_page.find_all(li, attrs{class: i_list list_n2})BS核心方法find() 查找第一个匹配标签​find_all() 查找全部匹配标签返回列表循环遍历。④ 循环遍历、进入详情页、下载图片n1 #遍历每个图集拼接URL、请求子页面、下载图片 for li in a_list: # 从父标签li中提取a标签再拿href视频风格先提取标签再拿属性 a_tag li.find(a) href a_tag.get(href) # 提取相对路径href child_url domain href #print(f正在请求子页面{child_url}) child_resp requests.get(child_url) child_resp.encoding utf-8 child_bs BeautifulSoup(child_resp.text, html.parser) img_tag child_bs.find(div, class_image_div).find(img) img_src img_tag.get(src) #print(img_src) img_resp requests.get(img_src) with open(f{n}.jpg,modewb) as f: f.write(img_resp.content) print(f{n}图片下载完毕) n1六、运行效果结果说明1. 运行代码后项目根目录存放有下载图片​2. 控制台逐行打印1图片下载完毕 2图片下载完毕 3图片下载完毕 4图片下载完毕 5图片下载完毕 6图片下载完毕 7图片下载完毕 8图片下载完毕 9图片下载完毕 10图片下载完毕 11图片下载完毕 12图片下载完毕 13图片下载完毕 14图片下载完毕 15图片下载完毕 16图片下载完毕 17图片下载完毕 18图片下载完毕 19图片下载完毕 20图片下载完毕 21图片下载完毕 22图片下载完毕 23图片下载完毕 24图片下载完毕 25图片下载完毕七、存在的问题优化点原代码缺陷优化方案无User-Agent请求头极易被服务器识别爬虫拦截添加浏览器UA请求头无异常捕获页面标签缺失直接报错崩溃无异常捕获页面标签缺失直接报错崩溃try-except全局捕获并且标签判空图片直接保存在项目根目录杂乱os自动新建专属文件夹统一存放无超时限制网络卡顿永久阻塞requests添加timeout超时参数无空标签判断部分页面缺图导致程序报错if判空找不到标签直接跳过当前条目八、进阶拓展方向1. 分页爬取识别页面下一页按钮实现多页图集全量爬取​2. 延时防封导入 time.sleep(1~2) 每次请求休眠1秒降低封禁概率​3. 文件名优化提取图集标题作为图片文件名不再使用数字序号​4. 多线程下载引入 threading 实现异步并发下载提升爬图速度​5. URL容错使用 urllib.parse.urljoin 智能拼接相对/绝对链接适配不规则路径。九、常见踩坑Q1报错ModuleNotFoundError: No module named bs4A未安装依赖执行 pip install beautifulsoup4 requests 安装库。Q2页面中文乱码A resp.encodingutf-8 手动指定编码部分网页可用 resp.apparent_encoding 自动识别编码。Q3requests请求403/访问被拒绝A网站开启基础反爬缺少UA请求头在headers中补充浏览器User-Agent。Q4图片打不开文件损坏A保存必须使用 wb 二进制模式不能用 w 文本模式写入图片。十、总结本项目是BS4爬虫入门标杆案例吃透后可迁移至壁纸、商品图、动漫图集等各类静态图片网站爬取。爬虫核心本质拿源码筛选标签文件落地保存掌握两级页面联动抓取逻辑即可搞定80%静态网页图片爬虫。

相关新闻