

爬取5K分辨率超清唯美壁纸
source link: https://segmentfault.com/a/1190000018527768?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

@[toc]
爬取5K分辨率超清唯美壁纸
简介
壁纸的选择其实很大程度上能看出电脑主人的内心世界,有的人喜欢风景,有的人喜欢星空,有的人喜欢美女,有的人喜欢动物。然而,终究有一天你已经产生审美疲劳了,但你下定决定要换壁纸的时候,又发现网上的壁纸要么分辨率低,要么带有水印。
这里有一款Mac下的小清新壁纸神器 Pap.er ,可能是Mac下最好的壁纸软件, 自带5K超清分辨率壁纸 ,富有多种类型壁纸,当我们想在Windows或者Linux下使用的时候,就可以考虑将 5K超清分辨率壁纸 爬取下来。
编写思路
为了方便快速开发,我们使用python中的wxpy模块完成微信的基本操作。
首先,打开Charles软件,进行抓包。打开 Pap.er ,开始抓包。(由于是Mac系统下的APP,所以非Mac系统的朋友可以直接看抓包结果)
抓包分析结果如下:
类型 地址 最新 https://service.paper.meiyuan... 最热 https://service.paper.meiyuan... 女生 https://service.paper.meiyuan... 星空 https://service.paper.meiyuan... 参数 page
不用改动, per_page
指的是每页提取的数量,也就是我们想要提取的图片数量。
抓完包之后,我们开始编写5K壁纸解析程序
# 爬取不同类型图片 def crawler_photo(type_id, photo_count): # 最新 1, 最热 2, 女生 3, 星空 4 if(type_id == 1): url = 'https://service.paper.meiyuan.in/api/v2/columns/flow/5c68ffb9463b7fbfe72b0db0?page=1&per_page=' + str(photo_count) elif(type_id == 2): url = 'https://service.paper.meiyuan.in/api/v2/columns/flow/5c69251c9b1c011c41bb97be?page=1&per_page=' + str(photo_count) elif(type_id == 3): url = 'https://service.paper.meiyuan.in/api/v2/columns/flow/5c81087e6aee28c541eefc26?page=1&per_page=' + str(photo_count) elif(type_id == 4): url = 'https://service.paper.meiyuan.in/api/v2/columns/flow/5c81f64c96fad8fe211f5367?page=1&per_page=' + str(photo_count) headers = {"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"} # 获取图片链接列表数据,json格式 respond = requests.get(url, headers=headers) # 对json格式转化为python对象 photo_data = json.loads(respond.content) # 已经下载的图片张数 now_photo_count = 1 # 所有图片张数 all_photo_count = len(photo_data) # 开始下载并保存5K分辨率壁纸 for photo in photo_data: # 创建一个文件夹存放我们下载的图片(若存在则不用重新创建) if not os.path.exists('./' + str(type_id)): os.makedirs('./' + str(type_id)) # 准备下载的图片链接,5K超清壁纸链接 file_url = photo['urls']['raw'] # 准备下载的图片名称,不包含扩展名 file_name_only = file_url.split('/') file_name_only = file_name_only[len(file_name_only) -1] # 准备保存到本地的完整路径 file_full_name = './' + str(type_id) + '/' + file_name_only # 开始下载图片 Down_load(file_url, file_full_name, now_photo_count, all_photo_count) # 已经下载的图片数量加1 now_photo_count = now_photo_count + 1
根据不同类型的壁纸,创建不同的文件夹编号进行分类。
上面的 Down_load()
函数是下载文件的意思,调用 requests
库,具体代码如下:
# 文件下载器 def Down_load(file_url, file_full_name, now_photo_count, all_photo_count): headers = {"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"} # 开始下载图片 with closing(requests.get(file_url, headers=headers, stream=True)) as response: chunk_size = 1024 # 单次请求最大值 content_size = int(response.headers['content-length']) # 文件总大小 data_count = 0 # 当前已传输的大小 with open(file_full_name, "wb") as file: for data in response.iter_content(chunk_size=chunk_size): file.write(data) done_block = int((data_count / content_size) * 50) data_count = data_count + len(data) now_jd = (data_count / content_size) * 100 print("\r %s:[%s%s] %d%% %d/%d" % (file_full_name, done_block * '█', ' ' * (50 - 1 - done_block), now_jd, now_photo_count, all_photo_count), end=" ") # 下载完图片后获取图片扩展名,并为其增加扩展名 file_type = filetype.guess(file_full_name) os.rename(file_full_name, file_full_name + '.' + file_type.extension)
chunk_size
指的是单次请求的最大值, content_size
指的就是我们下载5K超清壁纸的大小,为了能够直观显示下载情况,所以添加了下载进度条的显示效果。核心代码为 file.write(data)
。
下载完毕后,为了方便我们查看文件,所以需要给图片添加对应的扩展名,比如 jpg,png,gif
,这里使用到 filetype
库对文件进行解析,判断其类型。
最后,开始在main中爬取5K高清壁纸:
if __name__ == '__main__': # 最新 1, 最热 2, 女生 3, 星空 4 # 爬取类型为3的图片(女生),一共准备爬取100张 print("程序已经开始运行,请稍等……") crawler_photo(1, 100) crawler_photo(2, 100) crawler_photo(3, 100) crawler_photo(4, 100)
使用教程
- 确保以下库均已安装:
# 如果没有安装,请使用pip install module安装 import requests import filetype import os import json from contextlib import closing
演示图片
完整源代码
项目源代码在 GitHub仓库
项目持续更新,欢迎您 star本项目
Recommend
-
23
编者按:本文来自微信公众号 “砺石商业评论”(ID:libusiness) ,作者:刘戈,36氪经授权发布。 作者 | 刘戈 编辑 | 张军智
-
47
唯美的李子柒,世俗的商业化
-
7
糖色时光:日系唯美人像摄影与后期实战攻略 2020-10-11 张子阳 推荐: 5 难度: 1
-
9
唯美人像摄影摆姿与拍摄教程 2020-9-14 张子阳 推荐: 4 难度: 1
-
11
刚学习python一个多月的小白,做个爬虫项目操练一下,如有不足,敬请雅正。 可行性分析 wallhaven上面有许多精美的壁纸,一张一张下载有时过于繁琐,本文便向读者展示如何自动化爬取
-
14
深度操作系统20.2发布:新有灵犀,唯美有度_IT新闻_博客园 深度操作系统20.2发布:新有灵犀,唯美有度 投递人
-
11
浓浓的李子柒风格,让人心生向往的慢生活,唯美古风美得不要不要的~ 文章转载自:三个设计师 ID: the3design 编辑:jane27 图源:网络、李子柒品牌官方微博 李子柒这位超级网红 相信大家都听过看过吧 她的视频...
-
7
作者:niemvuilaptrin译者:前端小智来源:medium有梦想,有干货,微信搜索 【大迁世界】 关注这个在凌晨还在刷碗的刷碗智。本文 GitHub
-
8
“未曾试图摘星捧月,但期望月亮奔我而来。” Python爬虫:爬取Bilibili壁纸喵的相册图片 5121428默哀,RIP🕯️ 之前我们在
-
6
2023-12-25 02:28 生成超清分辨率视频,南洋理工开源Upscale-A-Video 原文来源:AIGC开放社区
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK