您的位置:首页 > 编程语言 > Python开发

懒人的Python技巧#20060708

2008-04-08 23:14 239 查看
National Geographic 的网站上有一个 Photo of the Day (POTD)栏目:
http://lava.nationalgeographic.com/pod/ (当天的墙纸)
http://lava.nationalgeographic.com/cgi-bin/pod/archive.cgi (以前的墙纸Archive)
每天会提供一张精美照片的墙纸下载(而且有800x600和1024x768两种尺寸大小选择),非常喜欢,因此每天我会:
1)打开IE;
2)从收藏夹中选取POTD链接进行浏览;
3)点击想下载的图片链接,进入下载页面;
4)从下载页面右键将图片另存到自己的电脑中;
5)打开文件管理器,到达保存图片的位置,进行查看。
在分析了这个栏目页面的源文件之后,发现图片链接的构成方式有规律可循,完全可以写个程序,自动帮我抓取我想要的1024x768尺寸的墙纸图片。于是,一段Python小程序和一个批处理就省掉了上述访问网站那些麻烦。
现在每天我只需要:
1)双击桌面上批处理文件的快捷方式,运行;
2)文件管理器自动被批处理打开到墙纸图片被保存的位置,直接进行查看。
省心!
 
---- GetPOTDwallpaper.py ---- BEGIN ----
from urllib import urlopen
from time import localtime
import sys
# 取得输出路径
outputpath = sys.argv[1]
# 取得链接中需要的日期信息
# 我们需要两位数字的年份, 月份和日号
# 使用time.localtime()取得当天的日期信息
year = str(localtime().tm_year)
year = year[2:]
month = localtime().tm_mon
if month < 10 : month = '0' + str(month)
else: month = str(month)
day = localtime().tm_mday
if day < 10 : day = '0' + str(day)
else: day = str(day)
# 拼合出包含墙纸图片的页面链接
POTDurl = "http://lava.nationalgeographic.com/cgi-bin/pod/wallpaper.cgi?day=" + day + "&month=" + month + "&year=" + year
# 使用urllib.urlopen()读取页面的HTML源代码
doc = urlopen(POTDurl).read()
# 链接的样本如下
#

1,024 x 768 pixels—best for larger monitors# 墙纸图片的链接里包含 "lg_wallpaper" 字串
# 因此可以由此进行查找和定位
if doc.find("lg_wallpaper") >= 0:
    # 定位链接
    begin = doc.find("lg_wallpaper") - 14
    end = begin + doc[begin:].find('">http://lava.nationalgeographic.com" + doc[begin:end]
    # 取得图片文件数据并保存到指定的位置
    imagedata = urlopen(wallpaperlink).read()
    outputfilepathname = outputpath + str(localtime().tm_year) + month + day + ".jpg"
    imagefile = open(outputfilepathname, 'wb')
    imagefile.write(imagedata)
    imagefile.close()
else:
    print "Can't find the image link."
---- GetPOTDwallpaper.py ---- E N D ----
 

---- GetPOTDwallpaper.bat ---- BEGIN ----
REM 用参数指定保存图片的位置
python GetPOTDwallpaper.py I:/Pic/NGM-WALLPAPERS/NGM-POD-WALLPAPER/
REM 启动文件管理器并且打开到保存墙纸图片的位置方便查看
explorer I:/Pic/NGM-WALLPAPERS/NGM-POD-WALLPAPER/
---- GetPOTDwallpaper.bat ---- E N D ---- 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: