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

    你可能感兴趣的文章
    Python 中的 *tuple 和 **dict 是什么意思?
    查看>>
    Python 中的 filter() 函数:筛选可迭代对象元素
    查看>>
    Python 中的 Pillow 不允许我打开图像(“超出限制“)
    查看>>
    Python 中的 threading 模块和 multiprocessing 模块有何区别?
    查看>>
    Python 中的 threading 模块和 multiprocessing 模块有何区别?
    查看>>
    Python 中的 Turtle 库详解
    查看>>
    Python 中的 __slots__ 属性有什么作用?
    查看>>
    Python 中的... 三点、箭头(->)、/ 分别的作用
    查看>>
    python读取json数据的id_python处理JSON数据
    查看>>
    Python 中的Duck Typing
    查看>>
    Python 中的for in 遍历生成字典、添加判断条件if
    查看>>
    Python 中的Lock与RLock
    查看>>
    Python 中的range(),arange()函数
    查看>>
    Python 中的内存管理机制
    查看>>
    Python 中的函数包装器:模型运行时和调试
    查看>>
    Python 中的列表理解和 lambda
    查看>>
    Python 中的多层for in嵌套循环使用
    查看>>
    Python 中的多线程(01/4)
    查看>>
    Python 中的多进程(01/2):简介
    查看>>
    Python 中的多进程(02/2):进程之间的通信)
    查看>>