前言:

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

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

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

Python环境搭建可以参考这里

顺手牵羊:Python 环境搭建​zhuanlan.zhihu.com

整体流程图

实战:

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

2.导入 rrequests库

 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("全部图片下载完毕,图片路径与当前文件相同!")

爬取过程图片:

爬取过程
部分成果

写在最后:

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

python 循环 覆盖之前print内容_Python爬虫第二战---爬取500px图片相关推荐

  1. 如何将爬虫获得的数据变为字典的key_Python爬虫第二战 爬取500px图片

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

  2. python爬虫爬取百度图片总结_python爬虫如何批量爬取百度图片

    当我们想要获取百度图片的时候,面对一张张图片,一次次的点击右键下载十分麻烦.python爬虫可以实现批量下载,根据我们下载网站位置.图片位置.图片下载数量.图片下载位置等需求进行批量下载,本文演示py ...

  3. python怎么爬取一个网页图片_python爬虫怎么实现爬取网站图片?

    对于网页结构而言,图片也就是一个文件及文件目录+名字的放在html中的src标签里.找到这个src标签对应的内容,就可以图片爬取下来. ps:有些网站的图片可能不是放在src标签里的,可能放在data ...

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

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

  5. python爬虫什么书好_python爬虫入门06 | 爬取当当网 Top 500 本五星好评书籍

    来啦,老弟 image 我们已经知道怎么使用 Requests 进行各种请求骚操作 也知道了对服务器返回的数据如何使用 正则表达式 来过滤我们想要的内容 - 那么接下来 我们就使用 requests ...

  6. python 爬视频下载_Python爬虫进阶之爬取某视频并下载的实现

    这篇文章我们来讲一下在网站建设中,Python爬虫进阶之爬取某视频并下载的实现.本文对大家进行网站开发设计工作或者学习都有一定帮助,下面让我们进入正文. 这几天在家闲得无聊,意外的挖掘到了一个资源网站 ...

  7. python爬虫-爬妹子图_Python 爬虫入门之爬取妹子图

    Python 爬虫入门之爬取妹子图 来源:李英杰  链接: https://segmentfault.com/a/1190000015798452 听说你写代码没动力?本文就给你动力,爬取妹子图.如果 ...

  8. go爬虫和python爬虫哪个好_python 爬虫实战项目--爬取京东商品信息(价格、优惠、排名、好评率等)-Go语言中文社区...

    利用splash爬取京东商品信息 一.环境 window7 python3.5 pycharm scrapy scrapy-splash MySQL 二.简介 为了体验scrapy-splash 的动 ...

  9. monthy python爬虫_Python爬虫DOTA排行榜爬取实例(分享)

    Python爬虫DOTA排行榜爬取实例(分享) 1.分析网站 打开开发者工具,我们观察到排行榜的数据并没有在doc里 doc文档 在Javascript里我么可以看到下面代码: ajax的post方法 ...

最新文章

  1. mysql数据库优化命令_MySQL数据库优化总结
  2. TOMCAT安全配置
  3. linux echo 怎么输出换行符到文件?(echo -e)
  4. 加计18-3李元龙第一次作业
  5. jQuery 入口函数主要有4种写法
  6. WCF错误“验证消息的安全性时发生错误”
  7. 拼图游戏和它的AI算法
  8. 内核如何为系统调用的参数传递参数
  9. how to install tensorflow-gpu==1.12.0
  10. Matlab Tricks(二十)—— Hilbert matrix 的创建
  11. python3 datatime,python3处理时间和日期:datetime模块 – Python3教程
  12. 微信小程序优购商城项目总结
  13. Adam:大规模分布式机器学习框架
  14. UART协议快速扫盲(图文并茂+超详细)
  15. 什么是代理IP?怎么在浏览器中配置代理IP?
  16. 零基础搭建Tomcat集群(超详细)
  17. 在一个批处理系统中有两个作业进程,一个作业序列其到达时间及估计运行时间如下表作业 到达时间
  18. 共享办公室,高效率创业
  19. linux下r232转usb驱动,R232转usb驱动
  20. 双智机器人 珠海_格力双智多元化成果显著 珠洽会展示核心科技

热门文章

  1. 微信小程序js数组初始化_微信小程序学习Course 3-2 JS数组对象学习
  2. android dp sp px_Android屏幕适配★★重点盘点★★
  3. visual studio 调试 定义debug常量_有趣的阅读 12个提高生产力的Visual Studio调试技巧...
  4. 将ANSYS里的数据导入MATLAB的步骤
  5. OpenCV的滤波与卷积
  6. c++ Oracle OCCI 编程
  7. 友盟分享小程序_在线学习应用“小打卡”小程序分享
  8. mysql stdistance_postgis的geography_columns和geometry_columns有什么区别
  9. skywalking(3)
  10. BigDecimal的个人总结