读《鲜活的数据》第二章有个从wunderground.com获取历史天气数据的例子。那是个国外的网站,或许国内的天气网站有更多关于国内城市的天气信息,用搜狗搜了“历史天气”,果然找到一个提供历史数据的网站lishi.tianqi.com,观察了一下它的页面结构,写了一个从这个网站抓取特定城市一年中每天天气的python程序。

历史天气的页面是以月为单位展示数据的,每个城市每个月对应一个页面,在url中体现出来,比如北京2012年3月的天气数据在http://lishi.tianqi.com/beijing/201203.html这个页面中。每天的数据则集中在当月页面中一个class名为"tqtongji2"的div中,这个div有一组ul标签,每个对应一天的数据,但第一行ul是表头,抓取的时候要跳过这个第一行,第一行ul标签有个特点,就是它有个class属性,而其他ul是没有属性的,因而程序可以利用这个特点辨别并跳过这一行。

下面就是python的抓取程序。python是2.7版,使用了 3.1版的BeautifulSoup作为html解析组件。

from __future__ import print_function
import urllib2
from BeautifulSoup import BeautifulSoup
strYear = '2013'
strFile = 'beijingWeather' + strYear + '.csv'
f = open(strFile, 'w')
for month in range(1, 13):
if(month < 10):
strMonth = '0' + str(month)
else:
strMonth = str(month)
strYearMonth = strYear + strMonth
print("\nGetting data for month" + strYearMonth + "...", end='')
url  = "http://lishi.tianqi.com/beijing/"+strYearMonth+".html"
page = urllib2.urlopen(url)
soup = BeautifulSoup(page)
weatherSet = soup.find(attrs={"class":"tqtongji2"})
if(weatherSet == None):
print("fail to get the page", end='')
continue
for line in weatherSet.contents:
if(line.__class__.__name__ == 'NavigableString'): continue
if(len(line.attrs) > 0): continue
lis = line.findAll('li')
strDate = lis[0].text
highWeather = lis[1].text
lowWeather  = lis[2].text
f.write(strDate +',' + lowWeather +',' + highWeather + '\n')
print("done", end='')
f.close()
print ("\nover")

写完程序跑了一下2012年的数据,画了个曲线供参考(网站上缺失2012.4.1到4.11的数据,我用2012.3.31那天的数据填补了这段空缺,所以那几天的线条是直线)

从网上抓取历史天气数据相关推荐

  1. 用R语言抓取历史天气数据

    用R语言抓取历史天气数据 中国城市历史数据网保存有从2011年1月1日起的历史数据,包括天气.高低温以及风向和风力,对于需要分析气象数据又苦于无法得到数据的研究人员,爬取数据不失为一个办法中的办法.但 ...

  2. scrapy爬取天气存MySQL_Scrapy实战篇(五)之爬取历史天气数据

    本篇文章我们以抓取历史天气数据为例,简单说明数据抓取的两种方式: 1.一般简单或者较小量的数据需求,我们以requests(selenum)+beautiful的方式抓取数据 2.当我们需要的数据量较 ...

  3. python爬取天气数据_Python爬取历史天气数据

    Python爬取历史天气数据 作者:梅昊铭 1. 导读 之前Mo给大家分享过杭州历年天气情况的数据集,相信有不少小伙伴好奇这些数据是怎么获取.今天Mo就来教大家如何使用Python来进行历史天气数据的 ...

  4. python爬取历史天气数据

    爬取历史天气数据 import requests from requests.exceptions import RequestException from bs4 import BeautifulS ...

  5. python爬取历史天气_Python 爬取历史天气数据

    Python 爬取历史天气数据 作者:梅昊铭 1. 导读 之前Mo给大家分享过杭州历年天气情况的数据集,相信有不少小伙伴好奇这些数据是怎么获取.今天Mo就来教大家如何使用Python来进行历史天气数据 ...

  6. python爬取历史天气数据并保存_Python爬取天气网历史天气数据

    我的第一篇博客,哈哈哈,记录一下我的Python进阶之路! 今天写了一个简单的爬虫. 使用python的requests 和BeautifulSoup模块,Python 2.7.12可在命令行中直接使 ...

  7. python爬取历史天气查询_Python爬虫实战-爬取历史天气数据

    最近项目需要对合肥市历史天气数据进行爬取,分析了几个天气数据网站,最终选择天气后报网站. 将实现过程遇到的问题以及下来,供以后参考. 步骤分析 这里我使用的是Python中的requests库Beau ...

  8. 用python爬取历史天气数据

    某天气网站(www.数字.com)存有2011年至今的天气数据,有天看到一本爬虫教材提到了爬取这些数据的方法,学习之,并加以改进. 准备爬的历史天气 爬之前先分析url.左上有年份.月份的下拉选择框, ...

  9. Python爬虫--爬取历史天气数据

        写在前面:爬虫是老鼠屎在进入实验室后接触的第一个任务,当时刚刚接触代码的老鼠屎一下子迎来了地狱难度的爬微博签到数据.爬了一个多月毫无成果,所幸带我的师兄从未给我疾言厉色,他给与了我最大的包容与 ...

最新文章

  1. 9A0-054 Exam 专业认证
  2. 返回的到的数据做整合_成功的整合营销有哪些秘诀
  3. 他曾经负债2.5亿,如今身价超过500亿
  4. 点击链接如何直接跳转到相对应的聊天窗口
  5. android input 点击事件失效,React Native:TextInput元素上的onContentSizeChange事件在Android上不起作用...
  6. Eclipse编译去除svn文件夹
  7. SQlite Android数据库的应用 Android SQLite 简易的学生成绩管理系统
  8. DuFile网赚网盘
  9. 八卦罗盘动态时钟(C语言)
  10. PEP 8: E305 excepted 2 blank lines, after class or function definition, found 1
  11. 随想录:开发一流Android SDK
  12. word论文排版和写作04:用MathType和word公式编辑器插入数学公式
  13. UPDATE的两个实例
  14. USACO之Section 1.1.2 PROB Greedy Gift Givers
  15. 单纤双向BIDI光模块常识
  16. matlab如何画极零图,用MATLAB画零极点图.ppt
  17. python数据可视化程序_python数据可视化简易版
  18. 下划线命名法 vs 驼峰命名法
  19. VMware打开虚拟机,会立即导致宿主机重启
  20. POCO::Net 简单的HTTPS程序

热门文章

  1. Adaptive Query Execution: Speeding Up Spark SQL at Runtime
  2. CSS学习笔记--Div+Css布局(div+span以及盒模型)
  3. 唯样商城:六种方式教你辨别芯片真伪
  4. 【游戏分析】《兽血沸腾单机版》明文包分析
  5. 水母缸的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  6. 学习计算机考证哪个学校好
  7. 【速览】2022年内窥镜市场现状及趋势分析:国内企业布局加速,国产化替代进程加快[图]
  8. 关于系统重装的一些有用建议
  9. kafka基础学习(六):kafka 代码示例
  10. Kubernetes权威指南第2版 和 Docker技术入门与实战第2版 两本容器的书下载地址