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

懒人的Python技巧#20060708

2006-07-11 14:37 393 查看
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()

# 链接的样本如下
# <a href="/pod/pictures/lg_wallpaper/06215_16.jpg"><img src="/pod/images/pod_1024x768_icon.gif" alt="" width="37" height="27" border="0"></a></td><td><a href="/pod/pictures/lg_wallpaper/06215_16.jpg">1,024 x 768 pixels—best for larger monitors</a></td></tr></table></div>
# 墙纸图片的链接里包含 "lg_wallpaper" 字串
# 因此可以由此进行查找和定位
if doc.find("lg_wallpaper") >= 0:
# 定位链接
begin = doc.find("lg_wallpaper") - 14
end = begin + doc[begin:].find('"><img')
# 拼合图片(JPG格式)的URL链接
wallpaperlink = "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 ----
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: