Python使用Flask抓取Bing每日图像

muyiyl 243 0

Bing搜索每天都会推荐一张精美的壁纸,利用python将它获取下来作为网站的背景,每天更新的网站背景可以增加不少美观。
对Bing首页将进行捉包发现其图片API格式如下:

  1. http://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1

其中:n为必要参数,n等于几就表示输出几个信息,n=1就是输出一条,最多8条。format与idx都是非必要参数,分别表示输出的格式以及输出哪一天的信息。
对必应捉包观察发现:
Python使用Flask抓取Bing每日图像
其返回的数据中,“images”节点下的“url”的值就是我们要的图片的链接。既然知道了图片的url,那么就开始利用python解析这个数据取出“url”的值再拼上Bing网址前缀(https://cn.bing.com/)就可以得到完整的图片链接了。
首先我们可以创建一个静态方法:

  1.   import urllib.request as imgur  
  2. import json  
  3. @staticmethod  
  4.     def getimg():  
  5.         # 解析 URL  
  6.         url = 'http://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1'  
  7.         req = imgur.Request(url)  
  8.         # 模拟一下浏览器  
  9.         req.add_header('user-agent','Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36')  
  10.         resp = imgur.urlopen(req)  
  11.         # 解析出整个网页代码  
  12.         req_html = resp.read().decode('utf-8')  
  13.         #下面拿url 将解析出来URL json格式化 得到一个字典  
  14.         html_json = json.loads(req_html)  
  15.         #取出"images"的图片信息 并取出第一条数据   
  16.         dict = html_json['images'][0]  
  17.         #取url 并拼接  
  18.         imgurl = dict['url']  
  19.         img_dic = '%s%s'%('http://cn.bing.com',imgurl)  
  20.         return img_dic  

上面的方法,便可以轻松拿出Bing每日图片的URL了,接下来只需要在FLask中某个py文件调用该方法,将值传给前端即可。比如:

  1. from common.libs.user.UserService import UserService  
  2.    @route_user.route("/login")  
  3.     def login():  
  4.         resp_data = {}  
  5.         resp_data['imgurl'] = UserService.getimg()  
  6.         resp_data['current'] = 'login'  
  7.         return ops_render("user/login.html", resp_data)  

在前端添加到背景中就可以就可以了:

  1. <body background="{{ imgurl }}">  

以上便可以通过Python 将Bing每日图片获取出来。至于怎么用~就要发挥想象力了

相关推荐:
[1].使用PHP抓取Bing每日图像并为己所用.孟坤博客.https://mkblog.cn/492/

发表评论 取消回复
表情 图片 链接 代码

分享
微信
微博
QQ