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

    你可能感兴趣的文章
    poj 3277 线段树
    查看>>
    POJ 3349 Snowflake Snow Snowflakes
    查看>>
    POJ 3411 DFS
    查看>>
    poj 3422 Kaka's Matrix Travels (费用流 + 拆点)
    查看>>
    Qt笔记——官方文档全局定义(二)Functions函数
    查看>>
    POJ 3468 A Simple Problem with Integers
    查看>>
    poj 3468 A Simple Problem with Integers 降维线段树
    查看>>
    poj 3468 A Simple Problem with Integers(线段树 插线问线)
    查看>>
    poj 3485 区间选点
    查看>>
    poj 3518 Prime Gap
    查看>>
    poj 3539 Elevator——同余类bfs
    查看>>
    Qt笔记——官方文档全局定义(三)Macros宏
    查看>>
    poj 3628 Bookshelf 2
    查看>>
    Qt笔记——官方文档全局定义(一)Types数据类型
    查看>>
    POJ 3670 DP LIS?
    查看>>
    POJ 3683 Priest John's Busiest Day (算竞进阶习题)
    查看>>
    POJ 3988 Selecting courses
    查看>>
    POJ 4020 NEERC John's inversion 贪心+归并求逆序对
    查看>>
    poj 4044 Score Sequence(暴力)
    查看>>
    POJ 基础数据结构
    查看>>