用Python爬取手机壁纸,太简单了吧!
人生苦短,快学Python!
在Python爬虫的学习过程中,爬取图片几乎是每个初学者都练习过的项目,比如我们之前就分享过:如何用Python快速爬取小姐姐的美图?
其中我们需要先利用Python中的request库和正则构建获取函数,以此爬取页面中的图片url。
最近有位同学分享他抓包获取到了小米壁纸api接口,那这样再去手机壁纸,可就太简单了!我们只需访问接口,再解析json数据,即可获取精准的壁纸图片url。
小米壁纸是什么,其实就是小米手机系统自带的app,包含了各种风格的手机壁纸。
提供接口的同学给的链接实在太长了,我试了试删去了不太影响主要作用的参数,剩下的接口如下所示:
https://thm.market.xiaomi.com/thm/****/type=WALLPAPER&tag=二次元宅
如果你使用浏览器打开该链接,就能得到10张壁纸图片的详细数据。其中参数cardStart
控制翻页,调整参数tag
选择不同的标签的壁纸图片。
剩下的只需调用Python下载图片到本地即可,具体代码如下所示。
def download_img(url, file_name):
res = requests.get(url)
img = open(file_name, 'wb')
img.write(res.content)
img.close()
简单解释一下,requests发起get请求拿到图片的信息。
open打开文件,以file_name
(比如111.jpg)为文件名,wb代表以二进制覆盖写。
如果我们想批量下载壁纸图片怎么办呢?for循环就完事了呀!
在交互式环境中输入如下命令:
for i in range(1,20):
url= f"https://thm.market.xiaomi.com/thm/*****/&cardStart={i}&type=WALLPAPER&tag=二次元宅"
html = requests.get(url).content
data = json.loads(html.decode('utf-8'))
for j in range(10): # 一页10个
image_url = data['apiData']['cards'][0]['products'][j]['imageUrl']
name = data['apiData']['cards'][0]['products'][j]['name']
print(name, image_url)
image_name = f"./二次元宅/{name}.png"
download_img(image_url, image_name)
在上述代码中,json.loads()
函数是将json格式数据转换为字典。接着再搭配for循环获取某一页的10个image_url
和name
,其中name
用于设置壁纸图片的本地路径+名称(使用相对路径下载到本地)。
最后调用前文中自定义的函数download_img()
,将每一张壁纸图片都下载到二次元宅文件夹中。
打开本地路径下的二次元宅
的文件夹,会发现所有的图片都已经被下载到本地。
是不是,太简单了吧!
关注公众号:拾黑(shiheibook)了解更多
[广告]赞助链接:
四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/
随时掌握互联网精彩
- 1 共绘亚太下一个“黄金三十年” 7995049
- 2 山里藏价值6000亿元黄金?村民发声 7907858
- 3 微信或史诗级“瘦身” 内存有救了 7820075
- 4 中国主张成为G20峰会的一抹亮色 7720422
- 5 朝鲜将军队提升至战斗准备状态 7606375
- 6 男子抱3个小孩跳海?官方通报 7546960
- 7 苏醒模仿向佐 7419931
- 8 带96岁母亲酒店养老遭拉黑 男子发声 7333500
- 9 男生解锁“滑步下泰山”技能 7216569
- 10 千年古镇“因网而变、因数而兴” 7126810