前言:

如今的高速网络极大促进了信息的展示方式,高清图片,视频等成就了我们的视听盛宴。但是,我们获取到的图片或者视频可能是被压缩过的,所以总体上还是有点小瑕疵,今天呢,我给大家带来一篇使用Python爬取著名高清图片网站500px图片的文章,这个爬虫具有搜索功能哦。让你感受摄影魅力!

通过这篇文章的学习,你将学会:

  • 使用requests库发起请求
  • 将requests请求结果转化为json类型
  • 提取json类型的数据
  • 写入图像类型文件

Python环境搭建可以参考这里

蓝色衬衫:Python第一步---环境搭建​zhuanlan.zhihu.com

整体流程图

实战:

  1. 安装使用 pip 工具 安装requests库
pip install requests

2.导入 requests库

import requests

3. json数据类型介绍

json是一种数据存储方式,它可以看做字典和列表的组合,列表可以是字典的值,字典可以是列表中的项目 一下例子可能会让你更容易理解

# json是一种数据存储方式,类python的字典,例如下面json_example={"name":"Mike",
"hoobby":["Ball","game"],
"address":[{"city":"New York"},{"street":"Center Street"}]
}
# 上面的json_example就是一个简单的json数据的实例
# 可以看到,json类型文件就是字典和列表的组合,列表可以是字典的值,字典
# 下面是获取指定数据的方法
name=json_example['name']
print(name)
# 输出: Mike
# 请注意下面的 0,这个0代表 adrress 这个 键 对应的值是一个列表
# 0代表列表的第一项,而第一项的键 city 所对于的值是New York,所以这样子可以获得city
city=json_example['address'][0]['city']
print(city)
# 输出 New York# 下面演示在不知道键名的情况下遍历json数据中所有内容
for i in json_example:print(i)
# 输出:hoobby address

爬取图片完整代码

import requests
# 接受搜索
key=input("请输入关键词:")pn=input("请输入要爬取的页数:")# input获取的输入是字符串格式,而我们想要的页数是整数,所以使用 int() 函数进行类型转换
# pn代表爬取的图片总页数
pn=int(pn)print('。。。。。。开始爬取。。。。。。')# 定义一个列表来存放图片地址
image_list=[]
# 利用循环,依次访问不同页码
for i in range(1,pn+1):print("。。。。。。正在提取第{}页。。。。。。".format(i))# 这个url是我通过浏览器开发者工具抓取的,对初学者来说难度有点大,建议直接使用就行# 传递页数和关键词即可使用# 如果想知道怎么获取,可以私信我,或者在评论区留言,我教你。url='https://api.500px.com/v1/photos/search?type=photos&term={}&image_size%5B%5D=1&image_size%5B%5D=2&image_size%5B%5D=32&image_size%5B%5D=31&image_size%5B%5D=33&image_size%5B%5D=34&image_size%5B%5D=35&image_size%5B%5D=36&image_size%5B%5D=2048&image_size%5B%5D=4&image_size%5B%5D=14&include_states=true&formats=jpeg%2Clytro&include_tags=true&exclude_nude=true&page={}&rpp=50'.format(key,i)# 通过requests库获的get方法访问图片所在页的地址# requests.get(url).json()表示将获得的访问结果转化为json类型image_json=requests.get(url).json()# print(requests.get(url).text)# 取消上面这句代码的注释,再仔细看看json实例介绍,你就知道下面为什么这么写了data=image_json.get('photos')for i in data:image_url=i.get('images')[8].get('url')# 把图片地址添加到之前列表中image_list.append(image_url)
# 定义一个变量来计算下载成功的图片个数,并且以它命名图片
count=0
for image in image_list:print("正在下载第{}张图片!".format(count+1))image_content=requests.get(image).content# wb表示以二进制的方式写入文件,w表示覆盖写,即创建新文件,或者覆盖之前同名的文件# b表示二进制方式写入,图片,视频等文件是二进制文件# "{}.jpg".format(count) 表示文件名,count是变量,下载过程中,文件名为:1.jpg , 2.jpg ... with open("{}.jpg".format(count),"wb") as f:f.write(image_content)# 每成功下载一张图片,count加1count=count+1print("成功下载第{}张图片!".format(count))print("全部图片下载完毕,图片路径与当前文件相同!")

爬取过程图片:

爬取过程
部分成果

写在最后:

希望大家通过本文掌握前文提到的几个技能,有问题欢迎在评论区留言或者私信我

如何将爬虫获得的数据变为字典的key_Python爬虫第二战 爬取500px图片相关推荐

  1. python 循环 覆盖之前print内容_Python爬虫第二战---爬取500px图片

    前言: 如今的高速网络极大促进了信息的展示方式,高清图片,视频等成就了我们的视听盛宴.但是,我们获取到的图片或者视频可能是被压缩过的,所以总体上还是有点小瑕疵,今天呢,我给大家带来一篇使用Python ...

  2. 爬虫项目实战一:爬取500px图片

    爬取500px图片 目标 项目准备 网站分析 反爬分析 代码实现 运行结果 目标 爬取500px网站图片并保存到本地. 项目准备 软件:Pycharm 第三方库:requests,fake_usera ...

  3. 爬虫图片mysql_爬取微博图片数据存到Mysql中遇到的各种坑\爬取微博图片\Mysql存储图片\微博爬虫...

    本人长期出售超大量微博数据.旅游网站评论数据,并提供各种指定数据爬取服务,Message to YuboonaZhang@Yahoo.com.同时欢迎加入社交媒体数据交流群:99918768 前言 由 ...

  4. mysql存储爬虫图片_爬取微博图片数据存到Mysql中遇到的各种坑\爬取微博图片\Mysql存储图片\微博爬虫...

    本人长期出售超大量微博数据.旅游网站评论数据,并提供各种指定数据爬取服务,Message to YuboonaZhang@Yahoo.com.同时欢迎加入社交媒体数据交流群:99918768 前言 由 ...

  5. python爬虫正则表达式爬取网页标签_Python爬虫实例(4)-用urllib、re和正则表达式爬取网页图片...

    文章目录简介正则爬虫Demo本例知识点 简介 python的第三方包极多种,尽量多看多用,对开发者来说是很好的.在爬虫领域,请求网页,除了requests包之外,还有urllib.request模块: ...

  6. 爬虫百战穿山甲(5)用大并发的手段批量爬取小图片

    网页分析 网址:百度图片:超前消费 因为我下一场直播(2021.4.24)的主题是超前消费,那就爬超前消费主题的图片吧. 看了一下,这个网页是下拉式的动态网页,根据我们前几篇的经验,直接找网络包吧,也 ...

  7. 【用Java爬取网页图片——爬虫爬取数据】

    用Java爬取网页图片--爬虫爬取数据 1.在创建项目中导入jsoup 2.创建一个保存下载图片的路径 3.使用URL读取网页路径,jsoup读取网页内容 4.利用属性标签获取图片连接块 5.因为该路 ...

  8. 上手快!!福利局!新手如何使用python爬虫爬取网页图片(使用正则进行数据解析)当然这个新手是我自己

    作为一个python新入门小白,突然就想发个博客,一方面为了记录学习历程,一方面能分享给新入门的同学经验,更多的是想和大家一起学习和交流.以下是我以小白的角度分享的爬虫的相关知识和一个简单的爬取网页图 ...

  9. node:爬虫爬取网页图片 1

    代码地址如下: http://www.demodashi.com/demo/13845.html 前言 周末自己在家闲着没事,刷着微信,玩着手机,发现自己的微信头像该换了,就去网上找了一下头像,看着图 ...

最新文章

  1. Ajax回退刷新页面问题的解决办法
  2. js 数字递增递减_数字推理满分技巧 !不是干货,请批我!
  3. HTTP 状态代码及其定义(转载)
  4. 三星t800Android 6.0,6.6毫米品质平板 三星GALAXY Tab S发布
  5. linux作业(第四章练习题)
  6. 集合对象-“块数据”操作--其实是同一对象引用
  7. python 路径拼接字符串_anaconda环境变量添加 python笔记
  8. swoole实现Timer定时器、心跳检测及Task进阶实例:mysql连接池
  9. mysql 启动必须加-h_Windows 安装 nginx,MySQL 等软件并加入系统服务启动详细
  10. Repast-边界控制
  11. 进程杀手 (prockiller)V2.82绿色版
  12. 个人博客登录注册部分
  13. 高质量解读《互联网企业安全高级指南》三部曲(技术篇)——安全管理体系
  14. Hexo-SEO搜索引擎优化(sitemap)
  15. 集线器、交换机和路由器的区别
  16. CTF密码学解题思路
  17. windows的各种扩展名详解
  18. 双十一!如何下载各种热卖商品视频?
  19. Loadrunner基础使用
  20. Numpy:关于flatten的理解

热门文章

  1. 开发Servlet的方法(2)
  2. java并发编程基础 --- 4.2 线程的优先级
  3. Jackson(ObjectMapper)的简单使用(可转xml)
  4. ios笔记一 追加数据
  5. 活动目录建立IIS站点
  6. 做B/S的朋友注意了。。。(又一先进的武器出现了)
  7. 剑指Offer 64 求1+2+...+n
  8. Chapter 2 向量空间
  9. 语义Web的一些概念和资源
  10. python 路径的操作