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 open读写文件实现脚本
Sep 06 Python
寻找网站后台地址的python脚本
Sep 01 Python
Python multiprocessing.Manager介绍和实例(进程间共享数据)
Nov 21 Python
使用Mixin设计模式进行Python编程的方法讲解
Jun 21 Python
python微信跳一跳系列之自动计算跳一跳距离
Feb 26 Python
Python cookbook(数据结构与算法)对切片命名清除索引的方法
Mar 13 Python
python之从文件读取数据到list的实例讲解
Apr 19 Python
python 读文件,然后转化为矩阵的实例
Apr 23 Python
python list格式数据excel导出方法
Oct 31 Python
深入分析python 排序
Aug 24 Python
python搜索算法原理及实例讲解
Nov 18 Python
python 逆向爬虫正确调用 JAR 加密逻辑
Jan 12 Python
Python实现天气查询软件
Python字典和列表性能之间的比较
使用pycharm运行flask应用程序的详细教程
只用Python就可以制作的简单词云
python通过函数名调用函数的几种方法总结
Jun 07 #Python
Python爬虫实战之爬取京东商品数据并实实现数据可视化
Python实现的扫码工具居然这么好用!
Jun 07 #Python
You might like
PHP的PDO操作简单示例
2016/03/30 PHP
PHP定时任务获取微信access_token的方法
2016/10/10 PHP
让ThinkPHP的模板引擎达到最佳效率的方法详解
2017/03/14 PHP
PHP PDOStatement::errorInfo讲解
2019/01/31 PHP
Javascript常用运算符(Operators)-javascript基础教程
2007/12/14 Javascript
javascript getElementsByClassName函数
2010/04/01 Javascript
Get中文乱码IE浏览器Get中文乱码解决方案
2013/12/26 Javascript
ActiveX控件与Javascript之间的交互示例
2014/06/04 Javascript
javascript上下方向键控制表格行选中并高亮显示的方法
2015/02/13 Javascript
JQuery控制radio选中和不选中方法总结
2015/04/15 Javascript
js实现超简单的展开、折叠目录代码
2015/08/28 Javascript
JS简单实现多级Select联动菜单效果代码
2015/09/06 Javascript
jquery获取复选框checkbox的值的简单实现方法
2016/05/26 Javascript
javascript之IE版本检测超简单方法
2016/08/20 Javascript
Node.js使用Express创建Web项目详细教程
2017/03/31 Javascript
Vue v2.5 调整和更新不完全问题
2017/10/24 Javascript
通过GASP让vue实现动态效果实例代码详解
2019/11/24 Javascript
javascript前端实现多视频上传
2020/12/13 Javascript
[39:21]LGD vs OG 2019国际邀请赛淘汰赛 胜者组 BO3 第二场 8.24
2019/09/10 DOTA
Python 的内置字符串方法小结
2016/03/15 Python
python判断字符串编码的简单实现方法(使用chardet)
2016/07/01 Python
Python网络编程 Python套接字编程
2017/09/13 Python
pytorch中如何使用DataLoader对数据集进行批处理的方法
2019/08/06 Python
django将数组传递给前台模板的方法
2019/08/06 Python
python如何提升爬虫效率
2020/09/27 Python
Python全局变量与global关键字常见错误解决方案
2020/10/05 Python
Pycharm-community-2020.2.3 社区版安装教程图文详解
2020/12/08 Python
css3+jq创作含苞待放的荷花
2014/02/20 HTML / CSS
html5 Canvas画图教程(10)—把面拆成线条模拟出圆角矩形
2013/01/09 HTML / CSS
国家地理在线商店:Shop National Geographic
2018/06/30 全球购物
美国在线健康和美容市场:Pharmapacks
2018/12/05 全球购物
Linux如何为某个操作添加别名
2013/03/01 面试题
教育专业毕业生推荐信
2014/07/10 职场文书
西柏坡导游词
2015/02/05 职场文书
邓小平文选读书笔记
2015/06/29 职场文书
Win10系统搭建ftp文件服务器详细教程
2022/08/05 Servers