博客
关于我
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/

    你可能感兴趣的文章
    mysql自增id超大问题查询
    查看>>
    MySQL锁与脏读、不可重复读、幻读详解
    查看>>
    MySQL集群解决方案(4):负载均衡
    查看>>
    mysql颠覆实战笔记(八)--mysql的自定义异常处理怎么破
    查看>>
    MySQL高级-MySQL并发参数调整
    查看>>
    MySQL高级-视图
    查看>>
    MySQL:判断逗号分隔的字符串中是否包含某个字符串
    查看>>
    Nacos在双击startup.cmd启动时提示:Unable to start embedded Tomcat
    查看>>
    Nacos安装教程(非常详细)从零基础入门到精通,看完这一篇就够了
    查看>>
    Nacos配置中心集群原理及源码分析
    查看>>
    nacos配置自动刷新源码解析
    查看>>
    Nacos集群搭建
    查看>>
    nacos集群搭建
    查看>>
    Navicat for MySQL 查看BLOB字段内容
    查看>>
    Neo4j电影关系图Cypher
    查看>>
    Neo4j的安装与使用
    查看>>
    Neo4j(2):环境搭建
    查看>>
    Neo私链
    查看>>
    nessus快速安装使用指南(非常详细)零基础入门到精通,收藏这一篇就够了
    查看>>
    Nessus漏洞扫描教程之配置Nessus
    查看>>