脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服务器之家 - 脚本之家 - Python - python 爬取天气网卫星图片

python 爬取天气网卫星图片

2021-11-25 12:01MrWayneLee Python

根据网站URL的规律编写的一个爬取天气网卫星图片的python爬虫,使用了requests包,感兴趣的朋友可以参考下

项目地址:

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

代码部分

下载生成文件功能

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 下载并生成文件
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, "次")

创建文件夹

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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

生成时间列表

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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列表

?
1
2
3
4
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

主函数

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 主函数
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("你的选择有误!请重试")

开始下载

?
1
2
3
pathname = createfolder(imgdate)
# 开始下载
downloadimg(imgdate, urllist, pathname)

完整代码

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
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 爬取天气网图片的资料请关注服务器之家其它相关文章!

原文链接:https://github.com/MrWayneLee/weather-demo

延伸 · 阅读

精彩推荐