Python从Bing壁纸的API接口保存图片

news/2025/2/4 18:33:46/

先贴代码:

from urllib import request
from lxml import etree
from time import localtime
from os import getcwddef Get_Image():url=r'https://cn.bing.com/HPImageArchive.aspx?format=xml&idx=0&n=1&mkt=zh-CN'for res0 in etree.HTML(request.urlopen(url).read()).xpath("//url/text()"):passwith open(r"{0}\{1}.jpg".format(getcwd(),str(localtime()[:-6])[1:-1].replace(",","-")),"wb") as file:file.write(request.urlopen(r"https://cn.bing.com"+res0).read())if __name__ == '__main__':Get_Image()

看不懂了是不是?眼花了?

好吧,因为我省行数,写在一块了,待会出一个优美一点的

开始吧!


所需模块:

        urllib中的request,用于发送Web请求

        lxml中的etree,用于解析图片所在网站

        time中的localtime,用于获取当前时间,命名图片

        os中的getcwd,用于获取当前目录,保存图片


代码实现原理:

        1.访问bing.com的API接口

        2.解析数据,找到图片的相对地址

        3.通过相对地址找到图片的网址,把它下载下来


第一步,导入模块,不用多说,没有的安装上


第二步,访问API接口

        url是https://cn.bing.com/HPImageArchive.aspx?format=xml&idx=0&n=1&mkt=zh-CN

        请求参数:

                format:返回的数据文件格式,由json或者xml文档,我这里选择xml文档,更适合解析

                idx:相当于请求哪个图片,填0就是今天的,填1就是昨天的,以此类推

                n:请求图片的数量,1就是今天的,2就是今天和昨天的

                mkt:默认填zh-CN

        打开这个网页,你会看到:

文档置顶的一句话:

This XML file does not appear to have any style information associated with it. The document tree is shown below.

意思是:“此 XML 文件似乎没有任何与此相关的样式信息。文档树如下所示。"

报错:是因为浏览器的编码格式错误,

可以看到:

 编码格式是UTF-8,到时候解析用这个就行了


好了,贴代码

模块

from urllib import request
from lxml import etree
from time import localtime
from os import getcwd

先来个函数

def Get_Image():

在里面写这些:


1

    '''获取壁纸的相对地址'''url=r'https://cn.bing.com/HPImageArchive.aspx?format=xml&idx=0&n=1&mkt=zh-CN'res0=request.urlopen(url).read()res1=etree.HTML(res0)res2=res1.xpath("//url/text()")for res3 in res2:pass

        获取壁纸的相对地址:

              访问API接口,获取数据,解析,通过for循环取出地址

              相当于上面的:

    url=r'https://cn.bing.com/HPImageArchive.aspx?format=xml&idx=0&n=1&mkt=zh-CN'for res0 in etree.HTML(request.urlopen(url).read()).xpath("//url/text()"):pass

             结果为:

/th?id=OHR.GiantManta_ZH-CN0594951444_1920x1080.jpg&rf=LaDigue_1920x1080.jpg&pid=hp

2

    '''合成绝对地址,并获取图片'''res4=request.urlopen(r"https://cn.bing.com"+res3)res5=res4.read()

                作用顾名思义

                我把这一步放在了file.write()中


3

    '''获取当前时间'''str1=localtime()str2=str1[:-6]str3=str(str2)[1:-1]str4=str3.replace(",","-")

                这一步是获取当地时间的元组,截取年月日,转成字符串,再去除括元组的逗号、括号

                相当于:

str(localtime()[:-6])[1:-1].replace(",","-")

                每一步结果为:

time.struct_time(tm_year=2021, tm_mon=8, tm_mday=19, tm_hour=18, tm_min=51, tm_sec=3, tm_wday=3, tm_yday=231, tm_isdst=0)
(2021, 8, 19)
2021, 8, 19
2021- 8- 19

4

    '''写入文件'''with open(r"{0}\{1}.jpg".format(getcwd(),str4),"wb") as file:file.write(res5)

                这不用多说

                获取当前目录,写入以当前日期为名字的图片


5

if __name__ == '__main__':Get_Image()

注意,这一步不是在函数内进行的

没了


再贴一下完整代码:

from urllib import request
from lxml import etree
from time import localtime
from os import getcwddef Get_Image():'''获取壁纸的相对地址'''url=r'https://cn.bing.com/HPImageArchive.aspx?format=xml&idx=0&n=1&mkt=zh-CN'res0=request.urlopen(url).read()res1=etree.HTML(res0)res2=res1.xpath("//url/text()")for res3 in res2:pass'''合成绝对地址,并获取地址'''res4=request.urlopen(r"https://cn.bing.com"+res3)res5=res4.read()'''获取当前时间'''str1=localtime()str2=str1[:-6]str3=str(str2)[1:-1]str4=str3.replace(",","-")'''写入文件'''with open(r"{0}\{1}.jpg".format(getcwd(),str4),"wb") as file:file.write(res5)if __name__ == '__main__':Get_Image()

这个和开头的那段效果一样


效果:

 当然,也可以把图片的二进制数据保存至数据库中


http://www.ppmy.cn/news/687869.html

相关文章

使用Python获取bing壁纸接口

原文地址–>点击进入阅读 注意:该接口和代码仅供学习使用!请勿将传回的壁纸用于非法用途!请尊重版权!树立版权意识! 由于读者自身行为导致的侵权,作者概不负责! Bing壁纸 Bing的壁纸是每天…

python爬虫 bing壁纸

最近学习python爬虫,写了一个小例子.主要用来爬取bing壁纸. 源码如下: ‘’’ import requests from bs4 import BeautifulSoup import re import os from urllib.request import urlretrieve import time from email.header import Header from email.mime.text import …

建了个网站,可以下载每日bing壁纸

每日bing壁纸 地址 : http://www.rampage.xin/bing/

设置bing桌面壁纸

golang语言编写,设置windows桌面壁纸,图片来自于必应网站(cn.bing.com) github源码地址:https://github.com/tujiaw/gowallpaper 有兴趣的Star一下吧 编译好的程序:https://pan.baidu.com/s/1l5OW9GeuUF0…

[深入浅出Windows 10]应用实战:Bing在线壁纸

本章介绍一个使用Bing搜索引擎背景图接口实现的一个应用——Bing在线壁纸,讲解如何使用网络的接口来实现一个壁纸下载,壁纸列表展示和网络请求封装的内容。通过该例子我们可以学习到如何使用网络编程的知识和开放的接口来实现一些有趣的应用程序&#xf…

探索性测试: 工具和方法的综合应用

1、前言 2、工具的使用 1、测试管理工具 2、缺陷跟踪工具 3、测试自动化工具 4、探索性测试工具 5、代码覆盖率工具 6、日志分析工具 7、网络抓包工具 8、数据库查询工具 9、并发和负载测试工具 10、安全测试工具 11、API测试工具 12、数据生成工具 13、异常处理和边界测试工具…

微信公众平台账号找回方法

问题:由于长时间未登录账号,导致账号冻结,在登录时提示密码不正确,点击修改密码提示邮箱未注册,注册时提示邮箱被占用,其实是因为账号被冻结了 解决方案: 1、微信关注“公众平台安全助手”&…

删除后别人的微信号变成wxid_怎样找回删除的微信好友?

视频内详细教程见转载点我查看 声明:方法三是wxid加好友方法本方法是目前全网唯- -有效方法,如果你被对方拉 黑,可以用本方法绕开进行好友恢复这个方法只能绕过黑名单,让对方收到添加的验证 消息,不能强制添加,还是需要…