Python爬虫实战(2):自定义年月日国别抓取Bing壁纸

写完程序的最深体会。

就是大概我python水平可能也就停留在这半死不活,写几十行都要各种翻资料的状态上了吧。

令人悲伤。

言归正传,代码地址

Bing壁纸有API接口,也有不同网站提供浏览服务,其中本例使用的是Long Zheng老师的bing image archive

Bing image archive提供来源多达10个国家的Bing首页壁纸,其中每天中有重复的部分,也有某个国家独有一张的情况。

主要思路:追踪两个URL链接,一个是image archive可以定位到某年某月某天某国家Bing首页壁纸的网址(后续称为壁纸网址),另一个为存放图片的链接(后续称为图片链接)。利用requests库获取存放图片链接URL的HTML代码,在本地写出,保存即可。

本例一共使用五个函数:

main为主函数,负责输入自定义的年月日以及国家类别,其中国家类别由1-10的数值指代。输入后调用其余四个函数进行处理,最终输出”Download successful”。

updateurl负责拼接字符串,传递由年月日组成的参数以及壁纸网址,以供后续文件命名使用。

phantomjs_req负责使用带有header请求头的Phantom JS无界面浏览器访问壁纸网址,返回其HTML源码。

parse_html负责解析源码,使用正则表达式抽取源码中的网址列表,经验证,列表最后一个元素一般均为图片链接,抽取保存为新URL,截取其中表示分辨率的部分并分别返回残缺的URL以及最大分辨率。(其中uk与gb分别表示英国以及不列颠两个“分别的国别”。由于未知原因,在某些日期中,uk没有图片而gb有,故可能会返回“’bing.com’ is not in list”错误)

download负责选择喜好的分辨率类型,拼接成目标图片的url并下载,以“年月日国别@分辨率.jpg”的文件名保存。(其中选择分辨率的功能待完善,Long 叔的网站并没有缓存那么多中分辨率的图片。。)

整个程序正常耗时十余秒即可下载保存一张自定义年月日国别的Bing壁纸了。

To do list

每次的To do list我怎么觉得都是给自己挖坑然后根本不填。。。

1.输入年月日时无异常处理功能,如果有需要可进行添加。

2.自定义分辨率功能有待完善,初步思路是继续寻找资料以确定已知图片URL后如何拼接成Bing服务器存放图片的链接。

大概就是这样了吧。

多余的话

有多少人能找个自己喜欢做的工作呢?许多人还不是把它当做谋生的工具罢了。

如果你是这样的状态,那就十分恭喜你了。

化用金庸在《倚天屠龙记》中的一句话:

前二十余年看过诸多对于人生艰难的描写,书中写得太也肤浅了,真实人生中不是这样的。因为那时候我还不明白。

参考资料

bing壁纸API

吴想在知乎问题“喜欢必应的首页图片,有什么办法下载下来作为壁纸用?”下的回答

开源中国正则表达式在线工具 真是羞耻

猜你喜欢

转载自blog.csdn.net/u013023297/article/details/77073830