懒人的Python技巧#20060708

news/2024/7/5 10:02:24

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('">
    # 拼合图片(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 ---- 





http://www.niftyadmin.cn/n/3651728.html

相关文章

Python Cookbook 第二版 汉化版 [00-1-Info]

Python Cookbook 第二版 汉化版David Ascher, Alex Martelli, Anna Ravenscroft 著出版社: OReilly出版日期: March 2005ISBN: 0-596-00797-3页码数目: 844 页同本书第一版一样&#xff0c;第二版汇集了 Python 程序员遇到的常见问题的解决办法。第二版针对 Python 2.4 做了相应…

搜索插入位置 leetcode java篇

给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 p.s. 用移位操作符时一定要打括号,不然优先级太后面了,会导致死循环…

最大子数组和 leetcode java篇

给你一个整数数组 nums &#xff0c;请你找出一个具有最大和的连续子数组&#xff08;子数组最少包含一个元素&#xff09;&#xff0c;返回其最大和。 子数组 是数组中的一个连续部分。 class Solution {public int maxSubArray(int[] ns) {int max ns[0];int pre 0;for(in…

考试的最大困扰度 leetcode java篇

一位老师正在出一场由 n 道判断题构成的考试&#xff0c;每道题的答案为 true &#xff08;用 T 表示&#xff09;或者 false &#xff08;用 F 表示&#xff09;。老师想增加学生对自己做出答案的不确定性&#xff0c;方法是 最大化 有 连续相同 结果的题数。&#xff08;也就…

Lonely Low

Have you ever been this lowthat you dont know where to go?Missing something you do long for,trying to get to heaven before they close the door?You walk slowly along the beach,seeing the sands of time sort of etch.You look around -- the sea is blue,shout …

SHAKESPEARE SONNETS LXVI

性能测试常见误区请看下面一个性能测试小案例&#xff1a;某公司OA产品的新版本即将发布。为了看看系统的性能&#xff0c;决定安排测试工程师A君执行性能测试任务。A君做法如下&#xff1a;1. 找到一台PC机&#xff0c;CPU主频1G&#xff0c;内存512M&#xff0c;……&a…

动态规划系列(1) leetcode java

第一题: 斐波那契数 &#xff08;通常用 F(n) 表示&#xff09;形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始&#xff0c;后面的每一项数字都是前面两项数字的和。也就是&#xff1a; 核心思想: F(n)F(n−1)F(n−2) class Solution {public int fib(int n) {int f0 …

FEW MORE CUPS OF COFFEE铪铪

AUG.2,2005FEW MORE CUPS OF COFFEEby Kakuji FunegataDo I have to remind you,Whom I owe cups of coffee to ?I am and will be forever in your debtUntil I do you the favor at last.Is it alright that you I inviteTo have some coffee at any time you like ?To the…