在使用公司一个Redirect开发工具页面时候,想个性化一下,就想添加一个背景,最好每天能自动变化,我第一个想到的就是Bing。

放狗搜索,发现一篇文章 抓取每天必应bing背景图片 - huangct的专栏 - CSDN博客,文中提供了抓取程式的Python代码,我摘录如下。

import urllib
import time

def main():
    url = 'http://www.bing.com'
    f = urllib.urlopen(url)
    html = f.read()
    f.close()
    a = html[html.index('/fd/hpk2'):]
    data = a[:a.index('',id:')]
    url = data.replace('\', '')
    url = 'http://www.bing.com'+url
    name=time.strftime("%Y%m%d", time.localtime())
    name=name+".jpg"
    urllib.urlretrieve(url,name)

if __name__ == "__main__":
    main()

关键的步骤是MS修改了jpg的url方式,用g_img={url:'/fd/hpk2/BambooBoat_ZH- CN1057817945.jpg'这样的字符串躲避机器人的抓取。简单的替换即可完成。

我用C#重写了代码实现,如下所示。

using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.IO;

namespace com.dddspace.GetBingImg

{ #region 获取Bing图片

class GetBingImg

{

static void Main(string[] args)

{

try

{

string html = GetHtml("http://www.bing.com");

html = html.Substring(html.IndexOf(@"/fd/hpk2/"));

html = html.Substring(0, html.IndexOf(".jpg") + 4);

html = html.Replace("\", "");

string url = "http://www.bing.com" + html;

Console.WriteLine(url);

}

catch (Exception e)

{

Console.WriteLine(e.ToString());

}

}

public static string GetBingImg()

{

string html = GetHtml("http://www.bing.com");

html = html.Substring(html.IndexOf(@"/fd/hpk2/"));

html = html.Substring(0, html.IndexOf(".jpg") + 4);

html = html.Replace("\", "");

return "http://www.bing.com" + html;

}

///

/// 获得页面的html代码

///

/// 页面地址

protected static string GetHtml(string url)

{

string html = "";

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);

request.Accept = "/";

HttpWebResponse response = null;

Stream stream = null;

StreamReader reader = null;

try

{

response = (HttpWebResponse)request.GetResponse();

stream = response.GetResponseStream();

reader = new StreamReader(stream, Encoding.UTF8);

html = reader.ReadToEnd().Replace("rn", ""); //我知道这里会改变html代码,但和这里没关系

}/*

catch (Exception excpt)

{

Console.WriteLine(excpt);

Console.Write("n【注意】出现异常,输入任意字符和回车继续:");

Console.ReadLine();

}*/

finally

{

if (reader != null)

{

reader.Close();

reader.Dispose();

}

if (stream != null)

{

stream.Close();

stream.Dispose();

}

if (response != null)

{

response.Close();

}

}

return html;

}

}

endregion

}

没多大的技术含量,就是用来把玩把玩。

在.aspx中加一个Panel,然后使用this.Panel1.BackImageUrl = BingImg.GetBingImg();设置一下背景图片就万事OK了。现在,一个死板的小工具就稍微变得丰富多彩一些,是不是会让你工作的情绪略微提高呢~

附上今天的Bing图片

image


原文链接: https://blog.alswl.com/2010/07/get-daily-bing-picture/
3a1ff193cee606bd1e2ea554a16353ee
欢迎关注我的微信公众号:窥豹

Comments

comments powered by Disqus