博客
关于我
python爬虫beautifulsoup4系列3
阅读量:470 次
发布时间:2019-03-06

本文共 1736 字,大约阅读时间需要 5 分钟。

如何爬取网站图片并将其保存到本地电脑

前言

本文将教你如何利用Python的BeautifulSoupRequests库,从网页上抓取图片,并将其保存到本地电脑中。通过简单易懂的步骤,你将能够轻松实现图片的批量下载。


目标网站

首先,我需要选择一个合适的目标网站。为了演示方便,我选择了699pic.com上的风景图片页面:http://699pic.com/sousuo-218808-13-1.html

接下来,我需要使用工具来定位图片的位置。推荐使用FirebugChrome DevTools,通过这些工具可以快速定位图片的位置。

从开发者工具中可以看到,图片的加载方式是通过<img>标签加载的,并且图片的class属性为"lazy"。这一点非常重要,因为它将帮助我定位所有图片。


找出图片标签

在已知图片的class属性为"lazy"的情况下,我可以使用BeautifulSoup库来抓取所有的图片标签。

  • 首先导入必要的库:

    from bs4 import BeautifulSoupimport requestsimport os
  • 使用requests库获取目标页面的内容:

    r = requests.get("http://699pic.com/sousuo-218808-13-1.html")fengjing = r.content
  • 使用BeautifulSoup解析页面内容:

    soup = BeautifulSoup(fengjing, "html.parser")
  • 找出所有class"lazy"的图片标签:

    images = soup.find_all(class_="lazy")

    这一步将返回所有图片标签的对象列表。


  • 保存图片

    接下来,我需要将这些图片下载到本地电脑中。

  • 在当前脚本文件夹下创建一个"jpg"的子文件夹:

    os.makedirs("jpg")
  • 使用os.getcwd()获取当前脚本的路径:

    current_path = os.getcwd()
  • 为每张图片指定一个唯一的存储路径。为了避免命名重复,我将使用图片的标题作为文件名:

    with open(os.path.join(current_path, "jpg", title + ".jpg"), "wb") as f:    f.write(requests.get(jpg_rl).content)

    这里,title是图片的标题,jpg_rl是图片的URL地址。


  • 参考代码

    以下是一个完整的代码示例,展示了从网页上抓取图片并将其保存到本地的完整流程:

    from bs4 import BeautifulSoupimport requestsimport os# 获取目标页面的内容r = requests.get("http://699pic.com/sousuo-218808-13-1.html")fengjing = r.content# 解析页面内容soup = BeautifulSoup(fengjing, "html.parser")# 找出所有图片标签images = soup.find_all(class_="lazy")# 遍历每一张图片for i in images:    try:        # 提取图片的URL地址        jpg_rl = i["data-original"]                # 提取图片的标题        title = i["title"]                # 下载图片并保存到本地        with open(os.path.join(os.getcwd() + "\\jpg\\" + title + ".jpg"), "wb") as f:            f.write(requests.get(jpg_rl).content)    except:        pass

    总结

    通过以上步骤,你已经掌握了如何从网页上抓取图片并将其保存到本地电脑中。这个方法简单易懂,适合对Python编程有一定基础的用户使用。希望你在实践中能取得好成绩!

    转载地址:http://hymbz.baihongyu.com/

    你可能感兴趣的文章
    OpenCV与AI深度学习 | OpenCV常用图像拼接方法(四):基于Stitcher类拼接
    查看>>
    OpenCV与AI深度学习 | OpenCV快速傅里叶变换(FFT)用于图像和视频流的模糊检测(建议收藏!)
    查看>>
    OpenCV与AI深度学习 | PaddleOCR 2.9 发布, 正式开源文本图像智能分析利器
    查看>>
    OpenCV与AI深度学习 | SAM2(Segment Anything Model 2)新一代分割一切大模型介绍与使用(步骤 + 代码)
    查看>>
    OpenCV与AI深度学习 | T-Rex Label !超震撼 AI 自动标注工具,开箱即用、检测一切
    查看>>
    OpenCV与AI深度学习 | YOLO11介绍及五大任务推理演示(目标检测,图像分割,图像分类,姿态检测,带方向目标检测)
    查看>>
    OpenCV与AI深度学习 | YOLOv10在PyTorch和OpenVINO中推理对比
    查看>>
    OpenCV与AI深度学习 | YOLOv11来了:将重新定义AI的可能性
    查看>>
    OpenCV与AI深度学习 | YOLOv8自定义数据集训练实现火焰和烟雾检测(代码+数据集!)
    查看>>
    OpenCV与AI深度学习 | YOLOv8重磅升级,新增旋转目标检测,又该学习了!
    查看>>
    OpenCV与AI深度学习 | 一文带你读懂YOLOv1~YOLOv11(建议收藏!)
    查看>>
    OpenCV与AI深度学习 | 五分钟快速搭建一个实时人脸口罩检测系统(OpenCV+PaddleHub 含源码)
    查看>>
    OpenCV与AI深度学习 | 什么是 COCO 数据集?
    查看>>
    OpenCV与AI深度学习 | 低对比度缺陷检测应用实例--LCD屏幕脏污检测
    查看>>
    OpenCV与AI深度学习 | 使用 MoveNet Lightning 和 OpenCV 实现实时姿势检测
    查看>>
    OpenCV与AI深度学习 | 使用 OpenCV 创建自定义图像滤镜
    查看>>
    OpenCV与AI深度学习 | 使用 SAM 和 Grounding DINO 分割卫星图像
    查看>>
    OpenCV与AI深度学习 | 使用OpenCV图像修复技术去除眩光
    查看>>
    OpenCV与AI深度学习 | 使用OpenCV检测并计算直线角度
    查看>>
    OpenCV与AI深度学习 | 使用OpenCV轮廓检测提取图像前景
    查看>>