Python爬虫 自动爬取图片并保存

article/2025/9/10 3:49:38

一、准备工作

 

用python来实现对图片网站的爬取并保存,以情绪图片为例,搜索可得到下图所示

f12打开源码

在此处可以看到这次我们要爬取的图片的基本信息是在img - scr中

二、代码实现

这次的爬取主要用了如下的第三方库

import re
import time
import requests
from bs4 import BeautifulSoup
import os

简单构思可以分为三个小部分

1.获取网页内容

2.解析网页

3.保存图片至相应位置

下面来看第一部分:获取网页内容

baseurl = 'https://cn.bing.com/images/search?q=%E6%83%85%E7%BB%AA%E5%9B%BE%E7%89%87&qpvt=%e6%83%85%e7%bb%aa%e5%9b%be%e7%89%87&form=IGRE&first=1&cw=418&ch=652&tsc=ImageBasicHover'
head = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36 Edg/92.0.902.67"}response = requests.get(baseurl, headers=head)  # 获取网页信息html = response.text  # 将网页信息转化为text形式

是不是so easy

第二部分解析网页才是大头

来看代码

Img = re.compile(r'img.*src="(.*?)"')  # 正则表达式匹配图片
soup = BeautifulSoup(html, "html.parser")  # BeautifulSoup解析html#i = 0  # 计数器初始值data = []  # 存储图片超链接的列表for item in soup.find_all('img', src=""):  # soup.find_all对网页中的img—src进行迭代item = str(item)  # 转换为str类型Picture = re.findall(Img, item)  # 结合re正则表达式和BeautifulSoup, 仅返回超链接for b in Picture:data.append(b)#i = i + 1return data[-1]# print(i)

这里就运用到了BeautifulSoup以及re正则表达式的相关知识,需要有一定的基础哦

下面就是第三部分:保存图片

    for m in getdata(baseurl='https://cn.bing.com/images/search?q=%E6%83%85%E7%BB%AA%E5%9B%BE%E7%89%87&qpvt=%e6%83%85%e7%bb%aa%e5%9b%be%e7%89%87&form=IGRE&first=1&cw=418&ch=652&tsc=ImageBasicHover'):resp = requests.get(m)  #获取网页信息byte = resp.content  # 转化为content二进制print(os.getcwd()) # os库中输出当前的路径i = i + 1 # 递增# img_path = os.path.join(m)with open("path{}.jpg".format(i), "wb") as f: # 文件写入f.write(byte)time.sleep(0.5) # 每隔0.5秒下载一张图片放入D://情绪图片测试print("第{}张图片爬取成功!".format(i))

各行代码的解释已经给大家写在注释中啦,不明白的地方可以直接私信或评论哦~

下面是完整的代码

import re
import time
import requests
from bs4 import BeautifulSoup
import os# m = 'https://tse2-mm.cn.bing.net/th/id/OIP-C.uihwmxDdgfK4FlCIXx-3jgHaPc?w=115&h=183&c=7&r=0&o=5&pid=1.7'
'''
resp = requests.get(m)
byte = resp.content
print(os.getcwd())
img_path = os.path.join(m)
'''
def main():baseurl = 'https://cn.bing.com/images/search?q=%E6%83%85%E7%BB%AA%E5%9B%BE%E7%89%87&qpvt=%e6%83%85%e7%bb%aa%e5%9b%be%e7%89%87&form=IGRE&first=1&cw=418&ch=652&tsc=ImageBasicHover'datalist = getdata(baseurl)def getdata(baseurl):Img = re.compile(r'img.*src="(.*?)"')  # 正则表达式匹配图片datalist = []head = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36 Edg/92.0.902.67"}response = requests.get(baseurl, headers=head)  # 获取网页信息html = response.text  # 将网页信息转化为text形式soup = BeautifulSoup(html, "html.parser")  # BeautifulSoup解析html# i = 0  # 计数器初始值data = []  # 存储图片超链接的列表for item in soup.find_all('img', src=""):  # soup.find_all对网页中的img—src进行迭代item = str(item)  # 转换为str类型Picture = re.findall(Img, item)  # 结合re正则表达式和BeautifulSoup, 仅返回超链接for b in Picture:  # 遍历列表,取最后一次结果data.append(b)# i = i + 1datalist.append(data[-1])return datalist  # 返回一个包含超链接的新列表# print(i)'''
with open("img_path.jpg","wb") as f:f.write(byte)
'''if __name__ == '__main__':os.chdir("D://情绪图片测试")main()i = 0  # 图片名递增for m in getdata(baseurl='https://cn.bing.com/images/search?q=%E6%83%85%E7%BB%AA%E5%9B%BE%E7%89%87&qpvt=%e6%83%85%e7%bb%aa%e5%9b%be%e7%89%87&form=IGRE&first=1&cw=418&ch=652&tsc=ImageBasicHover'):resp = requests.get(m)  #获取网页信息byte = resp.content  # 转化为content二进制print(os.getcwd()) # os库中输出当前的路径i = i + 1 # 递增# img_path = os.path.join(m)with open("path{}.jpg".format(i), "wb") as f: # 文件写入f.write(byte)time.sleep(0.5) # 每隔0.5秒下载一张图片放入D://情绪图片测试print("第{}张图片爬取成功!".format(i))

最后的运行截图

 三、总结

这次仅仅是保存了29张图片,在爬取其他网页的时候,用的方法都是大同小异,最主要还是根据网页的内容灵活变换,观察它的源码。另外有部分网站可能会有反爬措施,爬的时候要注意哦~如果还有不懂的地方,欢迎留言私信


http://chatgpt.dhexx.cn/article/aHieiNnr.shtml

相关文章

保存网页图片的方法

最近ui妹子经常找我....... 当然不是的....只是想让我给他弄两张网页的图片....遂FE退化切图仔.... 话不多说,进入正文。有些朋友因为工作需要(比如某鹿某祖等图片好想保存下来天天舔屏,还得是高清的....)又不知道如何保存网页中…

图片管理之保存图片数据

保存图片数据 在保存数据之前我们需要先获取图片关联的sku的id 1、获取sku表id 接口分析 请求方式: GET /meiduo_admin/skus/simple/ # -------获取sku的id--------url(rskus/simple/$, images.ImageView.as_view({get: simple})), 请求参数: 通过请…

图片的上传与保存

先找到数据库的用户表点击设计添加 picture 字段与 nvarchar 数据类型 2.更新数据模型,先找到 S_User 表删除,然后再从数据库更新模型并保存 3.先在视图上写出图片上传与保存需要的页面 3.1 { title: ‘头像’, templet: customUserPicture },//头像…

yarn 下载安装

注意 尽量不要使用 npm 下载 yarn 因为可能下载的不是全局的,而且可能没有修改注册表 导致以后下载全局的东西的时候下载失败 如果已经安装了,且出现全局错误提示 可以直接使用 官网安装包 他会自动覆盖你之前的安装,并且擦写 注册表 下…

windows下安装yarn

目录 1.介绍 2.下载和安装 3.配置环境变量和镜像源 1.介绍 最近接触的公司前端项目用到了Yarn,先来了解一下Yarn,Yarn是Facebook最近发布的一款依赖包安装工具。Yarn是一个新的快速安全可信赖的可以替代NPM的依赖管理工具。 官网的说明是 Yarn is …

npm 安装yarn

Yarn是Facebook最近发布的一款依赖包安装工具。Yarn是一个新的快速安全可信赖的可以替代NPM的依赖管理工具 快速安装 //在NPM 中安装 npm install -g yarn MacOS 在Mac上安装比较方便,使用初始化脚本即可 1 curl -o- -L https://yarnpkg.com/install.sh | bash …

yarn常用安装命令

纯属哔哔赖赖瞎扯一下,以前一直用npm install、npm run ,突然来yarn,懵逼了,这是啥?感觉应该是和npm一样的东西,只是这里用yarn,难道它是npm更高级的替代品?为什么要替代npm&#xf…

yarn的安装与使用,以及一些常用命令

官网:首页 | Yarn - JavaScript 软件包管理器 | Yarn 中文文档 - Yarn 中文网 1 - 简介 Yarn 对你的代码来说是一个软件包管理器, 你可以通过它使用全世界开发者的代码,或者分享自己的代码给全世界的开发者。Yarn 做这些事情快捷、安全、可靠…

Node.js安装,npm安装yarn步骤

第一步,首先安装npm npm是node.js下的包管理器,node.js的下载网址 Node.js 1.下载安装包后一路无脑点击next最后点击finish即可,安装完成之后打开文件夹就是以下目录。 2.在cmd窗口输入node -v、npm -v查看版本检查是否安装成功 一般完成以…

yarn的下载与安装

yarn的下载与安装 近期老师留关于antd和antv的作业,安装了好久好久的yarn,一直报错如下: 考虑到yarn的安装出错主要是由于没有进行全局安装或者安装路径有问题。用npm安装时较容易导致无法进行全局安装,为了避免这一问题&#xff…

windows安装yarn 详细教程

1、yarn介绍:yarn是一个代码包管理器,它允许我们与来自世界各地的其他开发人员共享代码。想要更多了解可以进入官网查看:https://yarnpkg.com/getting-started 2、进入yarn官网,可以看见官网已经声明从新版本(16.10)开始&#xf…

yarn安装与配置【Windows】

📚文章导航 前言下载安装1. 官方安装包2. ⭐️ npm 命令安装 配置1. 环境变量2. 下载目录3. 淘宝镜像源 前言 今天在使用 hexo 搭建个人博客的时候,遇到了yarn install dependencies卡死的情况,之后发现 yarn 命令也不起作用了,经…

【yarn】 yarn的安装和使用

yarn的简介:Yarn是facebook发布的一款取代npm的包管理工具。yarn的特点:速度超快。Yarn 缓存了每个下载过的包,所以再次使用时无需重复下载。 同时利用并行下载以最大化资源利用率,因此安装速度更快。超级安全。在执行代码之前&am…

Yarn 安装与使用详细介绍

文章目录 背景什么是 Yarn速度快离线模式可靠可确定性网络优化扁平化模式版本控制其他关于 Yarn 的介绍 Yarn 安装windowsmac方式一方式二 Yarn 换源Yarn 常用命令Yarn 独有的命令 特性推荐阅读 背景 在 Node 生态系统中,依赖通常安装在项目的 node_modules 文件夹…

yarn的安装和使用(极其详细)

一、yarn的简介: Yarn是facebook发布的一款取代npm的包管理工具。 二、yarn的特点: 速度超快。Yarn 缓存了每个下载过的包,所以再次使用时无需重复下载。 同时利用并行下载以最大化资源 利用率,因此安装速度更快。超级安全。在…

使用npm安装yarn

很多同学用惯了npm安装项目依赖, 想要尝试使用yarn的命令, 但是第一次使用yarn的时候,发现报错, 这是什么情况呢? 因为,想要使用yarn,需要首先安装yarn。 那么问题来了,如何安装呢…

Python库之numpy库的安装教程

一、numpy简介 NumPy是一个功能强大的Python学习库,主要用于对多维数组执行计算。NumPy这个词来源于两个单词-- Numerical和Python。NumPy提供了大量的库函数和操作,可以帮助程序员轻松地进行数值计算。这类数值计算广泛用于以下任务: 1.机…

Numpy库的学习(一)

今天来学习一下Python库中,支持高级大量的维度数组与矩阵运算的神奇的Numpy库 Numpy同时也对数组运算提供大量的数学函数,对于大量计算运行效率极好 是大量机器学习框架的基础库 废话不多说,直接开整 Numpy中最核心的结构就是ndarray数组…

Numpy库的下载及安装(吐血总结)

Python很火,我也下了个来耍耍一阵子。可是渐渐地,我已经不满足于它的基本库了,我把目光转到了Numpy~~~~~ 然而想法总是比现实容易,因为我之前下的是Python3.3.x,所有没有自带pip!!!&…

Python - Numpy库的使用(简单易懂)

目录 numpy多维数组——数组的创建 1、array函数创建数组对象 2、通过arange、linspace函数创建等差数组对象 3、通过logspace函数创建等比数列数组 函数 zeros ones diag eye full numpy多维数组——生成随机数 函数 seed rand randn randint 函数 binomial normal 和…