保存bing首页图片到本地

2018-02-27 11:27:18来源:oschina作者:pkookp8人点击

分享
from urllib import request
import re
bingeverydayimgprefix= 'https://www.bing.com/az/hprichbg/rb/'
with request.urlopen('https://www.bing.com/') as f:
data = f.read()
#print('Status:', f.status, f.reason)
for k, v in f.getheaders():
pass
bingdata = data.decode('utf-8')
def findimg(htmlstring):
return re.findall(r'/.jpg', htmlstring)
print("===================")
bracket = re.findall(r'/{.*?/}', bingdata)
cnt = 0
jpglist=[]
for i in bracket:
if findimg(i):
cnt += 1
jpglist.append(i)
print("here has %d jpg element(s)" % cnt)
truejpegurl=[]
jpegfilename=[]
for i in jpglist:
result = [x for x in re.split("/|/'|/"", i) if x]
for j in result:
if findimg(j):
truejpegurl.append(bingeverydayimgprefix + j)
jpegfilename.append(j)
print(truejpegurl)
print(jpegfilename)
print("===========================================================")
import urllib.request
def getImg(url,filename):
urllib.request.urlretrieve(url, filename)
n=0
for cururl in truejpegurl:
getImg(truejpegurl[n], jpegfilename[n])
n += 1

近来学习了一下python,花了1-2周时间了解了一下语法,写了一个一直想学会的爬bing图片的代码


还是有很多语法根本不会用


应该找不到这段这么搓的代码了,应该算原创吧,发出来参考一下吧。如果看官正好想找怎么爬bing图片的代码,那就太好了


一直以为代码是拿来用的,写的怎么样没有任何关系。直到看到linus讲解一段关于链表的good taste代码,这里用了python除了因为有现成的库可以调用,没有体现出使用它的面向对象的优势,可以说是poor taste。函数定义混杂在整个流程中,函数的封装惨不忍睹,调试方法完全靠打印。。。但愿一段时间以后不会写出这样的代码吧

这段代码的整体思想就是


1.把首页的html信息下载下来


2.一次正则匹配找到jpg的url所在行,一次正则拿出jpg的url


3.浏览器f12看了下图片地址,发现得到的jpg地址是相对地址,需要加上前缀,因此硬编码一个前缀地址


4.通过urllib.request.urlretrieve把图片保存到本地,文件名即为图片名


todo:暂时还不知道怎么用python设置桌面

最后,这个脚本每天都能获取到两张图片,一张是今天的bing首页图片,一张是明天的


运行环境适用windows,python3.4-3.6,20180214


python2应该需要改一下,语法有很多差异,学习的话还是用新版本吧


最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台