python主页网站_python使用django框架,让自己网站的背景自动和必应首页同步

必应首页的精美壁纸,一直都以其精美的图片质量而得到广大网友好评。必应网站每天自动更新首页的壁纸,如果让你的网站背景和必应首页的壁纸相同,会给你的网站带来很大的美观度提升。

但是怎么做到同步呢?

如果你只是简单通过普通爬虫是很难抓取到的。

有些人就想通过必应提供的图片下载链接,把壁纸保存到服务器站点的图片目录供自己的网站使用,但这样做有很多弊端:

一来是因为把图片保存到自己的服务器内会造成服务器臃肿不堪,服务器的空间是很宝贵的,每天下载图片保存到站点不仅浪费网站带宽,更会造成服务器运行速度变慢。

二来是因为通过此方式下载的图片都会保留必应的水印,就像下图:

但是如何突破这些限制呢?

在此我给大家提供一个API:

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

通过这个API可以得到无水印的必应图片,API后面的数字可以从【1-8】任选。分别对应一次得到多少张图片。默认一张,最多八张,因为必应首页每天推荐的壁纸最多就是八张。

下面可以通过python解析这个API,获取相应的值。

import json

import urllib.request as ur

class Get_biying(object):

def get_one_photo(self):

url=r'http://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n=3'

headers={

'User-Agent': 'Mozilla / 4.0(compatible;MSIE6.0;Windows NT 5.1)'

}

request=ur.Request(url,headers=headers)

response=ur.urlopen(request)

html_byte=response.read()

html_string=html_byte.decode('utf-8')

#解析成字典形式,图片保存在images的key中:

dict_json=json.loads(html_string)

#得到images的key所包含的图片信息:

list_photo=dict_json['images']

# 得到list_photo中的第三张图片组成的字典

dict_three=list_photo[2]

#得到图片的残缺url

url_photo=dict_three['url']

#将图片的残缺url组合成一个完整的url

url_photo=r'http://cn.bing.com'+url_photo

return url_photo

只通过解析API是得不到完整的图片下载链接的,需要在图片链接前加上‘http://cn.bing.com’,

这样就得到完整的图片链接。

然后如何在django中使用呢。首先在python新建的app的views中创建相应的方法:

def index(request):

g=Get_biying()

url_photo=g.get_one_photo()

request.session['url_photo']=url_photo

return render(request,'base/base.html')

上图中是引用新创建的class文件,然后把得到的返回值保存到django中的session中。也许有网友会问,为什么要保存在session中呢?直接context传给相应的html文件不就行了吗?

起初我也是这样做的,但是当其他模板继承这个模板的时候,不会得到这个这个图片链接。

但是把图片存到session中的时候,即使其他模板继承这个模板的时候,图片的链接还是可以得到的。

以下是模板中调用session的值。

background-image: url({{ request.session.url_photo }});

这样无论多少模板继承这个模板,图片的链接都会得到。

以上是我个人总结,如有疑问,欢迎下方讨论。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值