用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 中国经济向世界提供“机遇清单” 7904268
- 2 朱元璋换帅照后明孝陵火了 7808159
- 3 水银体温计将禁产 有网友囤货100支 7712771
- 4 2025这些“经济”持续成长壮大 7616626
- 5 近8000吨车厘子来了 7524211
- 6 老人接孙女从认不出到相拥大哭 7427955
- 7 冯提莫自曝癌症复发并转移 7332198
- 8 西班牙女员工连续提前到岗被开除 7236779
- 9 男子毒杀儿女案细节披露 7139756
- 10 寒潮来袭!多地气温将创下半年来新低 7043765







AI100
