爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 19341|回复: 16

[混合编程] 扒雷达综合反射率的爬虫

[复制链接]

新浪微博达人勋

发表于 2015-11-24 16:30:31 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
github地址:https://github.com/smft/scrapy_radar_img

忽然间发现国家局无法下载(自动回复:请不要使用迅雷等下载工具,点我查看下载帮助)雷达综合反射率历史图片了,看来只能自己动手每天扒一扒了。存下来的图说不定有朝一日可以卖钱。。。
请记住,将此进程写进定时任务中,包你每天神清气爽一辈子。

先看配置文件,该文件用于存放区域雷达拼图名称,雷达站点编号。供程序调用。
  1. ANEC
  2. ANCN
  3. AECN
  4. ACCN
  5. ASCN
  6. ASWC
  7. ANWC
  8. ABCJ
  9. ABHH
  10. ACES
  11. Z9210
  12. Z9002
  13. Z9250
  14. Z9518
  15. Z9516
  16. Z9513
  17. Z9515
  18. Z9519
  19. Z9517
  20. Z9523
  21. Z9555
  22. Z9551
  23. Z9558
  24. Z9556
  25. Z9559
  26. Z9562
  27. Z9563
  28. Z9570
  29. Z9574
  30. Z9577
  31. Z9571
  32. Z9579
  33. Z9580
  34. Z9576
  35. Z9572
  36. Z9578
  37. Z9531
  38. Z9535
  39. Z9532
  40. Z9538
  41. Z9543
  42. Z9539
  43. Z9536
  44. Z9631
复制代码
下面是主程序,思路就是python调用wget。
  1. # -*- coding: utf-8 -*-

  2. """
  3. wget radar ref gif from CMA
  4. @author: qzhang
  5. """

  6. import os
  7. import string
  8. import time
  9. import smtplib
  10. from email.mime.text import MIMEText
  11. from email.mime.multipart import MIMEMultipart

  12. def get_img(year_in,month_in,day_in,station_info,path_to_save):
  13.         hr=["00","01","02","03","04","05","06","07","08","09","10","11","12","13","14","15","16","17","18","19","20","21","22","23"]
  14.         mi=["00","10","20","30","40","50"]
  15.         se=["00"]
  16.         if station_info[0]=="A":
  17.                 image_path="mosaic"
  18.         if station_info[0]=="Z":
  19.                 image_path="image"
  20.         for hr_cell in hr:
  21.                 hr_str=hr_cell
  22.                 for mi_cell in mi:
  23.                         mi_str=mi_cell
  24.                         for se_cell in se:
  25.                                 se_str=se_cell
  26.                                 url_path="http://www.moc.cma.gov.cn/mocimg/radar/"+image_path+"/"+station_info+"/QREF/"+year_in+"/"+month_in+"/"+day_in+"/"+station_info+\
  27.                                                                         ".QREF000."+year_in+month_in+day_in+"."+hr_str+mi_str+se_str+".GIF"
  28.                                 save_path=path_to_save+station_info+"/"
  29.                                 os.system("wget -P "+save_path+" "+url_path)
  30.                                 flag=year_in+month_in+day_in+hr_str+mi_str
  31.                                 print flag
  32.         return 0

  33. site_flag=open("./radar_site.ini","r")
  34. path_to_save="/home/qzhang/radar_img/"
  35. site_info=site_flag.read().split("\n")
  36. yesterday=time.strftime("%Y-%m-%d-%H-%M-%S",time.localtime(time.time()-86400)).split("-")
  37. record=[]
  38. for site_cell in site_info[:-1]:
  39.         station_info=site_cell
  40.         flag=get_img(yesterday[0],yesterday[1],yesterday[2],station_info,path_to_save)
  41.         if flag==0:
  42.                 record+=[station_info+" !!!success!!!"]
  43.         else:
  44.                 record+=[station_info+"!!!fail!!!"]
  45. if os.system("tar -cvf  ~/radar_img_"+yesterday[0]+yesterday[1]+yesterday[2]+".tar.gz "+path_to_save):
  46.         record+=["tar file !!!success!!!"]
  47. else:
  48.         record+=["tar file !!!fail!!!"]
  49. if os.system("rm -r "+path_to_save):
  50.         record+=["rm file !!!success!!!"]
  51. else:
  52.         record+=["rm file !!!fail!!!"]
  53. for cell in record:
  54.         print cell
  55.         print time.strftime("%Y-%m-%d-%H-%M-%S",time.localtime(time.time()))
复制代码
最后,截图证明可行



2015-11-24 16:22:05屏幕截图.png
2015-11-24 16:22:34屏幕截图.png
2015-11-24 16:22:55屏幕截图.png

评分

参与人数 1金钱 +15 贡献 +5 收起 理由
mofangbao + 15 + 5

查看全部评分

密码修改失败请联系微信:mofangbao

新浪微博达人勋

0
早起挑战累计收入
发表于 2015-11-24 16:34:14 | 显示全部楼层
写过一个爬基本所有产品的,思路都差不多,你可以稍微改得更强大点。谢谢分享
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-11-26 09:50:48 | 显示全部楼层
调用wget实现的呀,我之前写过一个调用selenium实现的,学习一下,谢谢分享。
{:eb502:}{:eb502:}
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2015-11-26 10:03:11 | 显示全部楼层
ginanony 发表于 2015-11-26 09:50
调用wget实现的呀,我之前写过一个调用selenium实现的,学习一下,谢谢分享。
{:eb502: ...

还是wget吧,linux标配,省去了别人装库的麻烦。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2015-11-26 10:03:49 | 显示全部楼层
mofangbao 发表于 2015-11-24 16:34
写过一个爬基本所有产品的,思路都差不多,你可以稍微改得更强大点。谢谢分享

{:eb505:}{:eb505:}{:eb505:}
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-5-8 21:09:21 | 显示全部楼层
好厉害😄
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-6-26 23:50:54 | 显示全部楼层
学习python中
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-6-27 14:47:34 | 显示全部楼层

                               
登录/注册后可看大图


刚刚测试了下,这个网址下为啥没产品?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-6-27 14:48:22 | 显示全部楼层

                               
登录/注册后可看大图
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-8-9 09:38:38 | 显示全部楼层
site_flag=open("./radar_site.ini","r")
我是新手,请问这句什么意思
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表