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之模拟鼠标键盘动作具体实现
Dec 30 Python
举例讲解Python中装饰器的用法
Apr 27 Python
举例讲解Python中的死锁、可重入锁和互斥锁
Nov 05 Python
python互斥锁、加锁、同步机制、异步通信知识总结
Feb 11 Python
pycham查看程序执行的时间方法
Nov 29 Python
Python对象与引用的介绍
Jan 24 Python
Python日志无延迟实时写入的示例
Jul 11 Python
Python3.x+迅雷x 自动下载高分电影的实现方法
Jan 12 Python
Django之form组件自动校验数据实现
Jan 14 Python
使用keras实现非线性回归(两种加激活函数的方式)
Jul 05 Python
通过python-pptx模块操作ppt文件的方法
Dec 26 Python
Python使用socket去实现TCP客户端和TCP服务端
Apr 12 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
PHP file_get_contents函数读取远程数据超时的解决方法
2015/05/13 PHP
php结合redis高并发下发帖、发微博的实现方法
2016/12/15 PHP
thinkphp5 加载静态资源路径与常量的方法
2017/12/24 PHP
基于jQuery的左右滚动实现代码
2010/12/03 Javascript
jQuery 常见操作实现方式和常用函数方法总结
2011/05/06 Javascript
js生成的验证码的实现与技术分析
2014/09/17 Javascript
JavaScript 学习笔记之操作符(续)
2015/01/14 Javascript
jQuery文字提示与图片提示效果实现方法
2016/07/04 Javascript
关于vue.js过渡css类名的理解(推荐)
2017/04/10 Javascript
详解vue嵌套路由-params传递参数
2017/05/23 Javascript
Vue的实例、生命周期与Vue脚手架(vue-cli)实例详解
2017/12/27 Javascript
微信小程序结合Storage实现搜索历史效果
2019/05/18 Javascript
微信小程序模板消息推送的两种实现方式
2019/08/27 Javascript
layer.js之回调销毁对话框的例子
2019/09/11 Javascript
vue跳转同一个组件,参数不同,页面接收值只接收一次的解决方法
2019/11/05 Javascript
[01:54]胎教DOTA2 准妈妈玩家现身中国区预选赛
2016/06/26 DOTA
Python Trie树实现字典排序
2014/03/28 Python
python如何实现excel数据添加到mongodb
2015/07/30 Python
Python通过RabbitMQ服务器实现交换机功能的实例教程
2016/06/29 Python
Python+PIL实现支付宝AR红包
2018/02/09 Python
对Python 3.5拼接列表的新语法详解
2018/11/08 Python
python selenium实现发送带附件的邮件代码实例
2019/12/10 Python
Python for循环通过序列索引迭代过程解析
2020/02/07 Python
python实现跨excel sheet复制代码实例
2020/03/03 Python
使用Keras 实现查看model weights .h5 文件的内容
2020/06/09 Python
Python3+selenium配置常见报错解决方案
2020/08/28 Python
前端实现打印图像功能
2019/08/27 HTML / CSS
Weekendesk意大利:探索多种引人入胜的周末主题
2016/10/14 全球购物
电子商务个人自荐信
2013/12/12 职场文书
财务主管岗位职责
2014/02/28 职场文书
十佳中学生事迹材料
2014/06/02 职场文书
化验室岗位职责
2015/02/14 职场文书
2015年清明节网上祭英烈活动总结
2015/03/26 职场文书
九不准学习心得体会
2016/01/23 职场文书
学校团代会开幕词
2016/03/04 职场文书
Anaconda安装pytorch和paddle的方法步骤
2022/04/03 Python