python 爬取天气网卫星图片
作者:MrWayneLee 发布时间:2022-01-11 15:52:48
标签:python,爬虫,天气网,图片
项目地址:
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)
爬取效果
来源:https://github.com/MrWayneLee/weather-demo
0
投稿
猜你喜欢
- 我就废话不多说了,大家还是直接看代码吧~one = tf.ones_like(label)zero = tf.zeros_like(labe
- 前言亲人工作考试,公司给的题库好像是直接从数据库导出的表格Excel形式,在移动端上非常难看,需要不断左右上下滑动,看不了多少题眼就瞎了,遂
- 目录1图像叠加2图像融合3按位操作1图像叠加可以通过OpenCV函数cv.add()或简单地通过numpy操作添加两个图像,res = im
- 要求利用python实现禁用键盘鼠标思路经过查阅资料目前最好的办法是采用ctypes中的dll文件进行编写from ctypes impor
- TensorFlow是一款优秀的深度学习框架,支持多种常见的操作系统,例如Windows10,Mac Os等等,同时也支持运行在NVIDIA
- 涉及到开发桌面程序,尤其是文本处理,剪贴板就很常用,不像 java 中那么烦锁,wxpython 中访问剪贴板非常简单,寥寥几句足以。# 取
- 最近在学习关于Python数据分析与挖掘方面的知识,在学习到Python数据分析工具方面时,需要安装一些第三方扩展库来增强Python的数据
- 装了 Access 2003 安全更新 (KB981716) 之后 Access 打不开,office2003-KB981716-FullF
- 一、说明自己一是想跟上潮流二是习惯于直接干三是没有人可以请教,由于这三点经常搞得要死要活。之前只简单看过没写过Diango,没看过Djang
- ARIMA模型预测餐厅销量import numpy as npimport pandas as pdimport matplotlib.py
- 本文分析了PHP中$GLOBALS['HTTP_RAW_POST_DATA']和$_POST的区别。分享给大家供大家参考,具
- pandas列转换为字典,但将相同第一列(键)的所有值合并为一个键形式一:import pandas as pd # datadata =
- MySQL数据库由于它本身的小巧和操作的高效, 在数据库应用中越来越多的被采用.本文中列举了一个P2P应用开发实例,实例中使用了MySQL来
- 最近写了一个网络验证登录的爬虫,需要发布为Rest服务,然后发现Flask是一个很好的Web框架,使用Python语言实现。1. 安装fla
- 目录1. DeepSource2. Codacy3. SonarQube4. Veracode5. Checkmarx6. Coverity
- 使用python实现双向链表,供大家参考,具体内容如下双向链表: 指的是讲数据链接在一起,每个数据是一个节点,每一个节点都有一个数据区,两个
- 引言安装或者更新完pytorch后,运行不了,显示错误:(base) xu@xusu:~$ pythonPython 3.7.1 (defa
- 背景一直对语音合成系统比较感兴趣,总想能给自己合成一点内容,比如说合成小说,把我下载的电子书播报给我听等等。语音合成系统其实就是一个基于语音
- 1. Pytorch中的广播机制如果一个Pytorch运算支持广播的话,那么就意味着传给这个运算的参数会被自动扩张成相同的size,在不复制
- 1、首先停止正在运行的MySQL进程 Linux下,运行 killall -TERM mysqld Windows下,如果写成服务的 可以运