02_中央气象台

作者: 过桥 | 来源:发表于2017-03-10 18:08 被阅读50次

简述

最近发现气象数据很适合进行Python分步完成抓取练习,检索各类资源对比发现中央气象台数据相对完整,类型也较为丰富,故计划针对不同类型分别练习。抓取数据请勿存档,商用请联系官方

爬取对象

抓取中央气象台卫星云图

使用包

import time, os #定时抓取
import requests 
from bs4 import BeautifulSoup
import datetime #精确时间

实现步骤

1、抓取对象分析
  • 通过分析图片列表得知其图片均按时间在播放器下端以小图形式展示,故不用进行翻页操作。


    图片列表
  • 观察小图布局,得知图片与时间一一对应,ok,文件名也可以获取了,初步分析完成。


    单个图片
2、抓取与本地保存核心代码
    for image_li in list_soup.find_all('li'):
        image_name = image_li.find('p', attrs={'class': 'time'}).getText().replace(':','_')
        img_small = image_li.find('p', attrs={'class': 'img'}).find('img')["data-original"] #小图
img_localhost = folder + '\\' + image_name + '.jpg'
img_req = requests.get(img_small, timeout=20)
with open(img_localhost, 'wb') as f:
        f.write(img_req.content)
3、优化
  • 继续分析页面中内容,发觉播放器中有放大图片功能,恩,要爬就爬高清图。
  • 对比小图URL与播放器中放大图片URL布局,得知存取目录不一致。
http://image.nmc.cn/product/2017/03/10/WXCL/small/SEVP_NSMC_WXCL_ASC_E99_ACHN_LNO_PY_20170310081500000.JPG?v=1489134787788
http://image.nmc.cn/product/2017/03/10/WXCL/SEVP_NSMC_WXCL_ASC_E99_ACHN_LNO_PY_20170310081500000.JPG?v=1489134788000
  • 更新图片路径
img_small = image_li.find('p', attrs={'class': 'img'}).find('img')["data-original"] #小图
img_big = img_small.replace('small/','')
  • 本次爬取对象数据定时更新,故增加定时执行功能
def re_exe(cmd, inc = 60): 
    while True: 
        os.system(cmd);
        main()
        time.sleep(inc) 

# N秒 执行一次
re_exe("echo %time%", 1800)
  • 增加程序稳定性,判断目录是否存在、文件是否已下载
    if os.path.exists(folder) == False:
        os.makedirs(folder)

    #如果文件不存在,且大小不为 0 字节,开始下载另存
    if os.path.isfile(img_localhost) == False or os.path.getsize(img_localhost) == 0:
  • 将其他感兴趣图集整理处理
#下载清单
DOWNLOAD_URL = [("能见度","seaplatform1","http://www.nmc.cn/publish/sea/seaplatform1.html"),("风","hourly-winds","http://www.nmc.cn/publish/observations/hourly-winds.html"),("气温","hourly-temperature","http://www.nmc.cn/publish/observations/hourly-temperature.html"),("小时降雨量","hourly-precipitation","http://www.nmc.cn/publish/observations/hourly-precipitation.html"),("卫星云图","fy2", "http://www.nmc.cn/publish/satellite/fy2.htm")]

    for title, folder, url in DOWNLOAD_URL:
        #print(title, folder, url)
        html = download_page(url)

总结

本轮示例主要复习了图片抓取,完善文件夹、文件处理,针对动态(更新较为频繁)网站设置自动抓取任务,完成后感觉本地连播此类图片还是挺有意思的......
完整代码

Paste_Image.png

相关文章

  • 02_中央气象台

    简述 最近发现气象数据很适合进行Python分步完成抓取练习,检索各类资源对比发现中央气象台数据相对完整,类型也较...

  • 用行动为高温坚守者撑起“遮阳伞”

    8月17日,中央气象台继续发布高温红色预警,这是中央气象台连续6天发布高温红色预警,也是中央气象台连续第28天发布...

  • 学习HM微博项目第4天

    步骤:OAuth授权01_加载登录界面 -> OAuth授权02_获得accessToken -> OAu...

  • 中央气象台

    #首席有话说# #萌台科普时间# 关于华北这次强降雨,习习中首席是这样说的,有两点与众不同[doge] 第一,小分...

  • “巴威”来了

    “26日18时,中央气象台发布台风红色预警,据了解,这是中央气象台今年首个台风红色预警,目前,中国气象局已...

  • 立裁   课堂分享一廓形衬衫02..成品

    立裁 课堂分享一廓形衬衫02_成品 小芳同学作品一棉麻面料

  • 说教师带你走进这个冬天

    紧急扩散!中央气象台:暴雪即将袭击安徽,恐超历史同期极值! 安徽说教师 最新消息 中央气象台今天早上8点 发布了暴...

  • 02_ webstrom

    在webstrom 中设置node 安装目录 ========================= Module b...

  • 09_使用SDL播放PCM

    通过命令ffpay播放PCM 可以使用ffplay播放《08_音频录制02_编程[https://www.jian...

  • 高温橙色预警:上海浙江等10省份局地气温超40℃

    中新网7月22日电 据中央气象台官网消息,中央气象台7月22日06时继续发布高温橙色预警:预计,7月22日白天,西...

网友评论

    本文标题:02_中央气象台

    本文链接:https://www.haomeiwen.com/subject/urhogttx.html