python 爬取天气网卫星图片


Posted in Python onJune 07, 2021

项目地址:

https://github.com/MrWayneLee/weather-demo

代码部分

下载生成文件功能

# 下载并生成文件
def downloadImg(imgDate, imgURLs, pathName):
    a,s,f = 0,0,0
    timeStart = time.time()
    while a < len(imgURLs):
        req = requests.get(imgURLs[a])
        imgName = str(imgURLs[a])[-13:-9]
        print(str("开始请求" + imgDate + " " + imgName + "的数据"))
        if req.status_code == 200:
            open(pathName + '\\' + os.path.basename(imgName) + '.png', 'wb').write(req.content)
            print("数据" + imgDate + " " + imgName + "下载完成")
            s += 1
            del req
        elif req.status_code == 404:
            print("数据" + imgDate + " " + imgName + "不存在")
            f += 1
        a += 1
    timeEnd = time.time()
    totalTime = round(timeEnd - timeStart, 2)
    print("全部数据请求完成!总耗时:",totalTime,"秒")
    print("共请求", a, "次;成功", s, "次;失败", f, "次")

创建文件夹

def createFolder(pathName):
    imgName_Year = pathName[0:4]
    imgName_Month = pathName[4:6]
    imgName_Day = pathName[6:8]
    imgName_date = imgName_Year + '-' + imgName_Month + '-' + imgName_Day

    mainPath = 'F:\\[Wayne Lee]\\学习资料\\Python\\爬取图像'
    newPathName = mainPath + '\\' + imgName_date
    realPath = newPathName + '\\'

    isExists = os.path.exists(newPathName)

    if not isExists:
        os.makedirs(newPathName)
        print("新文件夹 [" + imgName_date + "] 创建成功")
        return realPath
    else:
        print(pathName + "文件夹已存在")
        return realPath

生成时间列表

def generateTime(imgUrl):
    timeList = []
    imgUrlList = []
    h,j = 0,0
    while h < 24:
        m = 0
        while m < 60:
            timeList.append("{:0>4d}".format(h * 100 + m))
            m += 15
        h += 1
    # print(timeList)
    # print(len(timeList))
    while j < len(timeList):
        imgUrlList.append(str(imgUrl + timeList[j] + "00000.JPG"))
        # print(timeList[j])
        j += 1
    return imgUrlList
    # print(imgUrlList)
    # print(len(imgUrlList))

生成下载URL列表

def downloadUrl(imgDate):
    imgUrl = "http://image.nmc.cn/product/" + imgDate[0:4] + "/" + imgDate[4:6] + "/" + imgDate[6:8] + "/WXBL/SEVP_NSMC_WXBL_FY4A_ETCC_ACHN_LNO_PY_" + imgDate # + "0000" +"00000.JPG"
    URLlist = list(generateTime(imgUrl))
    return URLlist

主函数

# 主函数
if __name__ == '__main__':
    # imgUrl = "http://image.nmc.cn/product/2020/04/11/WXBL/SEVP_NSMC_WXBL_FY4A_ETCC_ACHN_LNO_PY_20200411044500000.JPG"
    # imgUrl = "http://image.nmc.cn/product/2020/04/11/WXBL/SEVP_NSMC_WXBL_FY4A_ETCC_ACHN_LNO_PY_20200411"
    # imgName = imgUrl[-21:-9]

    while True:
        print("[1]手动输入日期")
        print("[2]获取当天日期")
        print("[3]退出程序")
        choose = str(input("你的选择:"))
        if choose == "1":
            imgDate = str(input("请输入日期[如20200411]:"))
            urlList = list(downloadUrl(imgDate))
            break
        elif choose == "2":
            imgDate = time.strftime("%Y%m%d",time.localtime())
            urlList = list(downloadUrl(imgDate))
            break
        elif choose == "3":
            break
        else:
            print("你的选择有误!请重试")

开始下载

pathName = createFolder(imgDate)
    # 开始下载
    downloadImg(imgDate, urlList, pathName)

完整代码

import requests
import time
import datetime
import os

# 下载并生成文件
def downloadImg(imgDate, imgURLs, pathName):
    a,s,f = 0,0,0
    timeStart = time.time()
    while a < len(imgURLs):
        req = requests.get(imgURLs[a])
        imgName = str(imgURLs[a])[-13:-9]
        print(str("开始请求" + imgDate + " " + imgName + "的数据"))
        if req.status_code == 200:
            open(pathName + '\\' + os.path.basename(imgName) + '.png', 'wb').write(req.content)
            print("数据" + imgDate + " " + imgName + "下载完成")
            s += 1
            del req
        elif req.status_code == 404:
            print("数据" + imgDate + " " + imgName + "不存在")
            f += 1
        a += 1
    timeEnd = time.time()
    totalTime = round(timeEnd - timeStart, 2)
    print("全部数据请求完成!总耗时:",totalTime,"秒")
    print("共请求", a, "次;成功", s, "次;失败", f, "次")

# 创建文件夹
def createFolder(pathName):
    imgName_Year = pathName[0:4]
    imgName_Month = pathName[4:6]
    imgName_Day = pathName[6:8]
    imgName_date = imgName_Year + '-' + imgName_Month + '-' + imgName_Day

    mainPath = 'F:\\[Wayne Lee]\\学习资料\\Python\\爬取图像'
    newPathName = mainPath + '\\' + imgName_date
    realPath = newPathName + '\\'

    isExists = os.path.exists(newPathName)

    if not isExists:
        os.makedirs(newPathName)
        print("新文件夹 [" + imgName_date + "] 创建成功")
        return realPath
    else:
        print(pathName + "文件夹已存在")
        return realPath

# 生成时间列表
def generateTime(imgUrl):
    timeList = []
    imgUrlList = []
    h,j = 0,0
    while h < 24:
        m = 0
        while m < 60:
            timeList.append("{:0>4d}".format(h * 100 + m))
            m += 15
        h += 1
    # print(timeList)
    # print(len(timeList))
    while j < len(timeList):
        imgUrlList.append(str(imgUrl + timeList[j] + "00000.JPG"))
        # print(timeList[j])
        j += 1
    return imgUrlList
    # print(imgUrlList)
    # print(len(imgUrlList))

# 生成下载URL列表
def downloadUrl(imgDate):
    imgUrl = "http://image.nmc.cn/product/" + imgDate[0:4] + "/" + imgDate[4:6] + "/" + imgDate[6:8] + "/WXBL/SEVP_NSMC_WXBL_FY4A_ETCC_ACHN_LNO_PY_" + imgDate # + "0000" +"00000.JPG"
    URLlist = list(generateTime(imgUrl))
    return URLlist

# 主函数
if __name__ == '__main__':
    # imgUrl = "http://image.nmc.cn/product/2020/04/11/WXBL/SEVP_NSMC_WXBL_FY4A_ETCC_ACHN_LNO_PY_20200411044500000.JPG"
    # imgUrl = "http://image.nmc.cn/product/2020/04/11/WXBL/SEVP_NSMC_WXBL_FY4A_ETCC_ACHN_LNO_PY_20200411"
    # imgName = imgUrl[-21:-9]

    while True:
        print("[1]手动输入日期")
        print("[2]获取当天日期")
        print("[3]退出程序")
        choose = str(input("你的选择:"))
        if choose == "1":
            imgDate = str(input("请输入日期[如20200411]:"))
            urlList = list(downloadUrl(imgDate))
            break
        elif choose == "2":
            imgDate = time.strftime("%Y%m%d",time.localtime())
            urlList = list(downloadUrl(imgDate))
            break
        elif choose == "3":
            break
        else:
            print("你的选择有误!请重试")

    # 创建文件夹
    pathName = createFolder(imgDate)
    # 开始下载
    downloadImg(imgDate, urlList, pathName)

爬取效果

python 爬取天气网卫星图片

以上就是python 爬取天气网卫星图片的详细内容,更多关于python 爬取天气网图片的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Python数据类型详解(二)列表
May 08 Python
python虚拟环境virualenv的安装与使用
Dec 18 Python
基于Python的XSS测试工具XSStrike使用方法
Jul 29 Python
Python语言描述最大连续子序列和
Dec 05 Python
Python IDLE入门简介
Dec 08 Python
在python中获取div的文本内容并和想定结果进行对比详解
Jan 02 Python
Django框架中间件(Middleware)用法实例分析
May 24 Python
python numpy实现文件存取的示例代码
May 26 Python
python设置环境变量的原因和方法
Jun 24 Python
Django通用类视图实现忘记密码重置密码功能示例
Dec 17 Python
浅谈Python访问MySQL的正确姿势
Jan 07 Python
Python基础数据类型tuple元组的概念与用法
Aug 02 Python
Python实现天气查询软件
Python字典和列表性能之间的比较
使用pycharm运行flask应用程序的详细教程
只用Python就可以制作的简单词云
python通过函数名调用函数的几种方法总结
Jun 07 #Python
Python爬虫实战之爬取京东商品数据并实实现数据可视化
Python实现的扫码工具居然这么好用!
Jun 07 #Python
You might like
PHP积分兑换接口实例
2015/02/09 PHP
php实现上传图片保存到数据库的方法
2015/02/11 PHP
ThinkPHP实现递归无级分类――代码少
2015/07/29 PHP
Yii2 assets清除缓存的方法
2016/05/16 PHP
CodeIgniter连贯操作的底层原理分析
2016/05/17 PHP
PHP中数组转换为SimpleXML教程
2019/01/27 PHP
jquery focus(fn),blur(fn)方法实例代码
2011/12/16 Javascript
8款非常棒的响应式jQuery 幻灯片插件推荐
2012/02/02 Javascript
javascript实现信息的显示和隐藏如注册页面
2013/12/03 Javascript
JS实现文字放大效果的方法
2015/03/03 Javascript
JavaScript删除数组元素的方法
2015/03/20 Javascript
js实现iframe框架取值的方法(兼容IE,firefox,chrome等)
2015/11/26 Javascript
详解js的六大数据类型
2016/12/27 Javascript
微信小程序 轮播图swiper详解及实例(源码下载)
2017/01/11 Javascript
js实现带三角符的手风琴效果
2017/03/01 Javascript
BootStrap给table表格的每一行添加一个按钮事件
2017/09/07 Javascript
JavaScript设计模式之调停者模式实例详解
2018/02/03 Javascript
JS数组Object.keys()方法的使用示例
2019/06/05 Javascript
JS面向对象编程基础篇(一) 对象和构造函数实例详解
2020/03/03 Javascript
[01:00]DOTA2 store: Collection of Artisan's Wonders
2015/08/12 DOTA
Python随机生成一个6位的验证码代码分享
2015/03/24 Python
python连接字符串的方法小结
2015/07/13 Python
Python字符串拼接、截取及替换方法总结分析
2016/04/13 Python
利用Python找出序列中出现最多的元素示例代码
2017/12/08 Python
Python并发编程协程(Coroutine)之Gevent详解
2017/12/27 Python
Python简单获取二维数组行列数的方法示例
2018/12/21 Python
python实现批量注册网站用户的示例
2019/02/22 Python
Linux上使用Python统计每天的键盘输入次数
2019/04/17 Python
python redis 批量设置过期key过程解析
2019/11/26 Python
jupyter实现重新加载模块
2020/04/16 Python
HTML5 history新特性pushState、replaceState及两者的区别
2015/12/26 HTML / CSS
好邻里事迹材料
2014/01/16 职场文书
给老婆的道歉信
2015/01/20 职场文书
高中16字霸气押韵班级口号集锦!
2019/06/27 职场文书
Spring Security中用JWT退出登录时遇到的坑
2021/10/16 Java/Android
Java实现HTML转为Word的示例代码
2022/06/28 Java/Android