一、准备工作

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

Python爬虫 自动爬取图片并保存相关推荐

  1. Python爬虫之爬取图片

    Python爬虫中图片的爬取方式有多种多样,本文将介绍几种常见的将图片保存的方式. 1.通过urllib.urlretrieve来爬取图片 基础知识介绍: urllib.urlretrieve(url ...

  2. python爬虫怎么爬取图片,python爬虫怎么爬取图片

    Python是很好的爬虫工具不用再说了,它可以满足我们爬取网络内容的需求,那最简单的爬取网络上的图片,可以通过很简单的方法实现.只需导入正则表达式模块,并利用spider原理通过使用定义函数的方法可以 ...

  3. python爬虫图片-python爬虫(爬取图片)

    python爬虫爬图片 第一步 载入爬虫模块 from requests_html import HTMLSession #载入爬虫模块 第二步 创建session对象 from requests_h ...

  4. python爬虫(爬取图片)

    在家无聊写的爬虫程序,用来爬取图片,由于这个是好久之前写的,有点忘了,写的不详细,后面再写一份详细的 爬虫的基本原理就是:  发起请求->获取响应->解析内容->保存数据 第一步:发 ...

  5. python爬虫-豆瓣爬取数据保存为html文件

    接<python爬虫-豆瓣数据爬取-正则匹配>中的案例五,将爬取的豆瓣租房信息网址和标题保存为html文件. 脚本修改如下: # -*-coding:utf-8 -*- import re ...

  6. Python3爬虫批量爬取图片并保存到本地

    看新闻的时候忽然发现了一个图片网站,那肯定得爬一下. 网址:https://www.0xu.cn/ 不难发现,qcmn这个路径对应青春美女 右键检查图片地址可见 访问该地址成功访问到了图片 正式开始 ...

  7. python爬虫怎么爬取图片_怎么用python爬取网站Jpg图片

    用python爬取网站图片,通过引用requests库就可完成.下面,小编将以爬取百度图片为例 工具/原料 python环境,网络 安装requests库 1 cmd打开命令行界面,输入pip ins ...

  8. 直播app源码Python爬虫练习 爬取图片

    virtualenv: 是针对python的包的多版本管理,通过将python包安装到一个模块来作为python的包虚拟环境,通过切换目录来实现不同包环境间的切换.其实不是非常爱捣腾的话,此工具就已经 ...

  9. 用python爬虫爬取无水印图片_使用python 爬虫,爬取图片

    一.需求: 用python实现去内涵段子里面下载网页当中的图片到本地当中 二.实现: 1.获取要爬取的URL地址 2.设置headers 3.请求网页内容,把html内容转换成XML 4.解析地址内容 ...

最新文章

  1. 文档上传下载 php开源,PHP文件的上传下载 - PHP开发学习门户的个人空间 - OSCHINA - 中文开源技术交流社区...
  2. T-SQL、Jet SQL、PL-SQL
  3. 实现库函数strcpy
  4. Mysql日期和时间函数大全
  5. idea改成c盘_解决IDEA占用C盘空间过大的问题
  6. jzoj5057-[GDSOI2017模拟4.13]炮塔【网络流,最大权闭合图】
  7. LeetCode 面试题55 二叉树的深度
  8. 西安单招学校学计算机软件的,西北大学软件职业技术学院单招
  9. poj Alice's Chance(最大流解题)
  10. centos6.5 bash基础命令2
  11. spss方差分析_交叉设计及SPSS多因素方差分析
  12. 使用Anaconda3安装tensorflow,opencv,使其可以在spyder中运行
  13. android用户界面之AlarmManager教程实例汇
  14. Steam一直显示断开服务器,为什么吃鸡老于steam服务器断开连接 | 手游网游页游攻略大全...
  15. fabs在python中是什么意思_Python fabs() 与 abs() 区别是什么?
  16. 线段与线段交点的求解
  17. 使用循环神经网络训练语言模型(从简单起手、歌词生成器,爬虫+GRU循环网络)
  18. CW——一款简易且有趣的文本编辑器
  19. mcinabox运行库下载安装_手机mcinabox运行库安装包下载-mcinabox运行库文件手机版下载v1.0_289手游网...
  20. 基于ESP8266的智能浇花控制系统的设计

热门文章

  1. 怎样编写Apple Push Notification服务器
  2. 可能是最全面的MySQL8.0与MySQL5.7差异分析
  3. OpenGL ES简介及几个相关重要概念
  4. HDU 2017 多校联赛 1002 Balala Power!
  5. python 日历模块_详解Python日历模块的使用
  6. 精密加工与超精密加工的一些问题整理
  7. 尚硅谷李立超老师讲解web前端网课笔记
  8. 数字化采购管理 招标采购系统源码
  9. 浅谈设计模式之单例模式
  10. WinCE系统编译过程