爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 20060|回复: 6

[源代码] python【爬虫】批量中国气象数据网订单,并获取下载路径

[复制链接]

新浪微博达人勋

发表于 2020-11-25 23:29:59 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 Zhuming 于 2020-11-25 23:31 编辑

本文参考了这篇博客:https://blog.csdn.net/qq_21567935/article/details/88828112,感谢八千鸟羽毛的分享,该作者写于2019年3月,如今已有一些不同(网站源代码做了一点更新)。该作者说明:该网站一天订单数不能超过45个,又由于本次数据集只能隔两个月检索一次,所以年份跨度选为十一年,最终只会产生44个订单。另外,该代码中间需要手动输入验证码。最后获取到的是包含一堆下载链接的txt,可以使用wget等工具下载。
工具:python,需要selenium库和firefox drive或Google drive。

直接贴最新的代码:
import time
from selenium import webdriver

start_year=2000 # 初始年份
end_year=2001 # 结束年份
driver= webdriver.Firefox()
driver.get('http://data.cma.cn/user/toLogin.html')
driver.refresh() # 刷新页面
driver.find_element_by_id("loginWeb-page").click()
vcode = input() # 在代码运行窗口(非浏览器窗口)填写验证码
print(vcode)
# 填写用户名 密码 验证码
driver.find_element_by_id("userName-page").send_keys("******") # 填入用户名
driver.find_element_by_id("password-page").send_keys("******") # 填入密码
driver.find_element_by_id("verifyCode-page").send_keys(vcode)
driver.find_element_by_id("loginPage-page").click()
time.sleep(4)
for i in range(start_year,end_year+1):
for j in range(1,5):
  driver.switch_to_window(driver.window_handles[0])
  driver.get("http://data.cma.cn/dataService/cdcindex/datacode/SURF_CLI_CHN_MUL_DAY_V3.0/show_value/normal.html") # 填入相应数据集检索页面的地址(就是输入日期页面的地址,该地址仅为示范)
  driver.find_element_by_id("dateS").clear()
  year = '%d' % i
  month =j*3 - 2
  start_month = '%d' % (month)
  end_month = '%d' % (month+2) # 月份间隔为3个月
  driver.find_element_by_id("dateS").send_keys(year+"-"+start_month)
  driver.find_element_by_id("dateE").clear()
  driver.find_element_by_id("dateE").send_keys(year+"-"+end_month)
  vcode2 = input()
  print(vcode2)
  driver.find_element_by_name("verifyCode").send_keys(vcode2)
  driver.find_element_by_class_name("search-bt1210").click()
  driver.switch_to_window(driver.window_handles[1]) # 切换窗口
  time.sleep(4)
  driver.find_element_by_id("buttonAddCar").click()
  time.sleep(4)
  driver.close()

网站源代码今后肯定还会继续更新,仔细找哪里做了改变。



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

新浪微博达人勋

发表于 2020-11-26 11:00:36 | 显示全部楼层
给力{:eb502:}
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2020-12-1 23:11:11 | 显示全部楼层
这个赞!
数据集检索的条条框框太多了,人为的藩篱
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2020-12-3 16:18:28 | 显示全部楼层
感谢楼主!
请问这个适用于还需要选择台站的数据集吗?
比如:中国地面气候资料月值数据集http://data.cma.cn/dataService/cdcindex/datacode/SURF_CLI_CHN_MUL_MON/show_value/normal.html
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2020-12-4 15:52:19 | 显示全部楼层
木木君2号 发表于 2020-12-3 16:18
感谢楼主!
请问这个适用于还需要选择台站的数据集吗?
比如:中国地面气候资料月值数据集http://data.cm ...

那你要往上加代码了,因为我这个只是根据我需要下载的数据网页爬的,具体问题具体分析的意思了
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2020-12-7 09:30:22 | 显示全部楼层

感谢楼主!
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

发表于 2021-1-21 14:11:28 | 显示全部楼层
不错,学习一下
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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