Bing背景图片获取代码

当我们使用微软的Bing的时候,会发现每天背景图片都是不一样的,但每张都很漂亮。鉴于最近在学习python,就萌生了获取每日Bing图片的想法,代码取自网上,我只是做了分析。

工作步骤:

1.取得Bing的response,分析一下Bing主页的源代码,有var g_img={url:’/fd/hpk2/ShuBrocade_ZH- CN760216482.jpg’,id:’bgDiv’,d:200,cN:’_SS’,crN:’bIm’,hash:’648′};sc_bgL(),在这里就是需要取得背景图片的地方。因为整个源代码只有这一处,所以可以用index(‘ ‘g_img={url:’)的方法去过滤背景图片的地址:content = urllib.urlopen(‘http://cn.bing.com/’).read()

tempStr = content[content.index(‘g_img={url:’)+12 : len(content)]

tempStr = tempStr[0 : tempStr.index(‘,id:’)-1]

tempStr = tempStr.replace(‘\’, ”)

bgImageUrl = ‘http://cn.bing.com’+tempStr

2. 下载图片的时候,使用urlretrieve(url, filename=None, reporthook=None, data =None)

3. 使用win32gui.SystemParametersInfo(Action, Param, WinIni)

#!/usr/bin/env python

#coding=utf-8

import os

import sys

import random

import urllib

import win32gui

import win32con

import Image

class Bing:

def __init__(self):

self.content = urllib.urlopen("http://cn.bing.com/").read()

self.bgImageUrl = ''

self.localFileName = ''

self.localBMPFileName = ''

def parseImageURL(self):

tempStr = self.content[self.content.index('g_img={url:')+12 : len(self.content)]

tempStr = tempStr[0 : tempStr.index(',id:')-1]

tempStr = tempStr.replace('\', '')

self.bgImageUrl = 'http://cn.bing.com' + tempStr

#only use for generate file name in local

def createLocalFileName(self):

randomStr = ''.join(random.sample(['a','b','c','d','e','f','g','h','i','j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'], 6)).replace(" ", "")

self.localFileName = "D:/Bing/" + randomStr + ".jpg"

self.localBMPFileName = "D:/Bing/" + randomStr + ".bmp"

def downloadImage(self):

if self.bgImageUrl == "":

self.parseImageURL()

if self.localFileName == "":

self.createLocalFileName()

data = urllib.urlretrieve(self.bgImageUrl, self.localFileName)

def updateBGImage(self):

img = Image.open(self.localFileName)

img.save(self.localBMPFileName)

os.remove(self.localFileName)

win32gui.SystemParametersInfo(win32con.SPI_SETDESKWALLPAPER, self.localBMPFileName, 0)

if __name__ == '__main__'== "__main__":

bing = Bing()

bing.downloadImage()

bing.updateBGImage()

顺便测试下bing图片是否可以外链:

09-11-22必应中国背景图一枚

link

评论

Popular Posts

如何提高情商(EQ)

地方门户网站项目可行性分析

快乐来自于做出「舍弃」的能力

树立正确的人生态度

2009年即将流行的牛逼语录:经典的我都无语了(转载)

小清新必须死

南京话的文化杂文一篇

《挪威的森林》精彩篇章:永远记得我

PSP3000破解问世

不要再Best Regards了!英文Email四大问题