Python 爬虫批量爬取网页图片保存到本地的实现代码


Posted in Python onDecember 24, 2020

其实和爬取普通数据本质一样,不过我们直接爬取数据会直接返回,爬取图片需要处理成二进制数据保存成图片格式(.jpg,.png等)的数据文本。

现在贴一个url=https://img.ivsky.com/img/tupian/t/201008/05/bianxingjingang-001.jpg
请复制上面的url直接在某个浏览器打开,你会看到如下内容:

Python 爬虫批量爬取网页图片保存到本地的实现代码

这就是通过网页访问到的该网站的该图片,于是我们可以直接利用requests模块,进行这个图片的请求,于是这个网站便会返回给我们该图片的数据,我们再把数据写入本地文件就行,比较简单。

import requests
headers={
  'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3861.400 QQBrowser/10.7.4313.400'}
url='https://img.ivsky.com/img/tupian/t/201008/05/bianxingjingang-001.jpg'
re=requests.get(url,headers=headers)
print(re.status_code)#查看请求状态,返回200说明正常
path='test.jpg'#文件储存地址
with open(path, 'wb') as f:#把图片数据写入本地,wb表示二进制储存
      for chunk in re.iter_content(chunk_size=128):
        f.write(chunk)

然后得到test.jpg图片,如下

Python 爬虫批量爬取网页图片保存到本地的实现代码

点击打开查看如下:

Python 爬虫批量爬取网页图片保存到本地的实现代码

便是下载成功辣,很简单吧。

现在分析下批量下载,我们将上面的代码打包成一个函数,于是针对每张图片,单独一个名字,单独一个图片文件请求,于是有如下代码:

import requests
def get_pictures(url,path):
  headers={
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3861.400 QQBrowser/10.7.4313.400'} 
  re=requests.get(url,headers=headers)
  print(re.status_code)#查看请求状态,返回200说明正常
  with open(path, 'wb') as f:#把图片数据写入本地,wb表示二进制储存
        for chunk in re.iter_content(chunk_size=128):
          f.write(chunk)
url='https://img.ivsky.com/img/tupian/t/201008/05/bianxingjingang-001.jpg'
path='test.jpg'#文件储存地址
get_pictures(url,path)

现在要实现批量下载图片,也就是批量获得图片的url,那么我们就得分析网页的代码结构,打开原始网站https://www.ivsky.com/tupian/bianxingjingang_v622/,会看到如下的图片:

Python 爬虫批量爬取网页图片保存到本地的实现代码

于是我们需要分别得到该页面中显示的所有图片的url,于是我们再次用requests模块返回当前该页面的内容,如下:

import requests
headers={
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3861.400 QQBrowser/10.7.4313.400'}
url='https://www.ivsky.com/tupian/bianxingjingang_v622/'
re=requests.get(url,headers=headers)
print(re.text)

运行会返回当前该页面的网页结构内容,于是我们找到和图片相关的也就是.jpg或者.png等图片格式的字条,如下:

Python 爬虫批量爬取网页图片保存到本地的实现代码

上面圈出来的**//img.ivsky.com/img/tupian/t/201008/05/bianxingjingang-017.jpg**便是我们的图片url,不过还需要前面加上https:,于是完成的url就是https://img.ivsky.com/img/tupian/t/201008/05/bianxingjingang-017.jpg。

我们知道了这个结构,现在就是把这个提取出来,写个简单的解析式:

import requests
headers={
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3861.400 QQBrowser/10.7.4313.400'}
url='https://www.ivsky.com/tupian/bianxingjingang_v622/'
re=requests.get(url,headers=headers)
def get_pictures_urls(text):
  st='img src="'
  m=len(st)
  i=0
  n=len(text)
  urls=[]#储存url
  while i<n:
    if text[i:i+m]==st:
      url=''
      for j in range(i+m,n):
        if text[j]=='"':
          i=j
          urls.append(url)
          break
        url+=text[j]
    i+=1
  return urls
urls=get_pictures_urls(re.text)
for url in urls:
  print(url)

打印结果如下:
Python 爬虫批量爬取网页图片保存到本地的实现代码

得到了url,现在就直接放入一开始的get_pictures函数中,爬取图片辣。

import requests
def get_pictures(url,path):
  headers={
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3861.400 QQBrowser/10.7.4313.400'}
  re=requests.get(url,headers=headers)
  print(re.status_code)#查看请求状态,返回200说明正常
  with open(path, 'wb') as f:#把图片数据写入本地,wb表示二进制储存
        for chunk in re.iter_content(chunk_size=128):
          f.write(chunk)
def get_pictures_urls(text):
  st='img src="'
  m=len(st)
  i=0
  n=len(text)
  urls=[]#储存url
  while i<n:
    if text[i:i+m]==st:
      url=''
      for j in range(i+m,n):
        if text[j]=='"':
          i=j
          urls.append(url)
          break
        url+=text[j]
    i+=1
  return urls

headers={
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3861.400 QQBrowser/10.7.4313.400'}
url='https://www.ivsky.com/tupian/bianxingjingang_v622/'
re=requests.get(url,headers=headers)
urls=get_pictures_urls(re.text)#获取当前页面所有图片的url
for i in range(len(urls)):#批量爬取图片
  url='https:'+urls[i]
  path='变形金刚'+str(i)+'.jpg'
  get_pictures(url,path)

结果如下:

Python 爬虫批量爬取网页图片保存到本地的实现代码

然后就完成辣,这里只是简单介绍下批量爬取图片的过程,具体的网站需要具体分析,所以本文尽可能详细的展示了批量爬取图片的过程分析,希望对你的学习有所帮助,如有问题请及时指出,谢谢~

到此这篇关于Python 爬虫批量爬取网页图片保存到本地的文章就介绍到这了,更多相关Python 爬虫爬取图片保存到本地内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python操作MySQL简单实现方法
Jan 26 Python
python字符串的常用操作方法小结
May 21 Python
详谈Python高阶函数与函数装饰器(推荐)
Sep 30 Python
Python遍历numpy数组的实例
Apr 04 Python
python邮件发送smtplib使用详解
Jun 16 Python
Python+selenium实现自动循环扔QQ邮箱漂流瓶
May 29 Python
Django框架实现逆向解析url的方法
Jul 04 Python
Python实现基于KNN算法的笔迹识别功能详解
Jul 09 Python
pymongo中group by的操作方法教程
Mar 22 Python
OpenCV图像颜色反转算法详解
May 13 Python
Python collections.defaultdict模块用法详解
Jun 18 Python
python使用布隆过滤器的实现示例
Aug 20 Python
用python获取txt文件中关键字的数量
Dec 24 #Python
举例讲解Python装饰器
Dec 24 #Python
python 基于opencv操作摄像头
Dec 24 #Python
python 基于selenium实现鼠标拖拽功能
Dec 24 #Python
python实现简单猜单词游戏
Dec 24 #Python
Python 虚拟环境工作原理解析
Dec 24 #Python
python基于openpyxl生成excel文件
Dec 23 #Python
You might like
咖啡知识 除了喝咖啡还有那些知识点
2021/03/06 新手入门
用来给图片加水印的PHP类
2008/04/09 PHP
初次接触php抽象工厂模式(Elgg)
2010/03/21 PHP
php获取本周星期一具体日期的方法
2015/04/20 PHP
PHP中使用foreach()遍历二维数组的简单实例
2016/06/13 PHP
jquery实现网站超链接和图片提示效果
2013/03/21 Javascript
12种不宜使用的Javascript语法整理
2013/11/04 Javascript
jquery显示隐藏input对象
2014/07/21 Javascript
AngularJS入门教程(一):静态模板
2014/12/06 Javascript
JQuery给网页更换皮肤的方法
2015/05/30 Javascript
js实现的黑背景灰色二级导航菜单效果代码
2015/08/24 Javascript
JS动态增删表格行的方法
2016/03/03 Javascript
深入浅析JavaScript中的作用域和上下文
2016/03/26 Javascript
购物车前端开发(jQuery和bootstrap3)
2016/08/27 Javascript
微信公众平台开发教程(四) 实例入门:机器人回复(附源码)
2016/12/02 Javascript
Bootstrap按钮组简单实现代码
2017/03/06 Javascript
红黑树的插入详解及Javascript实现方法示例
2018/03/26 Javascript
JS构造一个html文本内容成文件流形式发送到后台
2018/07/31 Javascript
微信小程序提交form操作示例
2018/12/30 Javascript
layui 上传图片 返回图片地址的方法
2019/09/26 Javascript
Python 过滤字符串的技巧,map与itertools.imap
2008/09/06 Python
linux下安装easy_install的方法
2013/02/10 Python
python实现支持目录FTP上传下载文件的方法
2015/06/03 Python
python中pandas.DataFrame的简单操作方法(创建、索引、增添与删除)
2017/03/12 Python
Python3实现发送QQ邮件功能(文本)
2017/12/15 Python
python实现批量修改图片格式和尺寸
2018/06/07 Python
简单了解django缓存方式及配置
2019/07/19 Python
PageFactory设计模式基于python实现
2020/04/14 Python
Python如何向SQLServer存储二进制图片
2020/06/08 Python
英国最大的LED专业零售商:Led Hut
2018/03/16 全球购物
英国领先的互联网葡萄酒礼品商:Vintage Wine & Port
2019/05/24 全球购物
优秀员工自荐书范文
2013/12/08 职场文书
学年末自我鉴定
2014/01/21 职场文书
员工合理化建议书
2014/05/19 职场文书
运动会广播稿200字(10篇)
2014/10/12 职场文书
利用python实时刷新基金估值(摸鱼小工具)
2021/09/15 Python