您的位置:首页 > 编程语言 > Python开发

利用Python和R采集与分析地震数据

2015-02-01 22:37 567 查看
这一次我们将要采集与分析的是国家地震台网的数据,原网页为http://data.earthquake.cn/datashare/globeEarthquake_csn.html。仍然使用python来自动化采集数据,使用R来进行数据分析。我们需要提取原网页中table中的地震数据。

其网页源文件中数据显示的格式如下,使用re模块的正则表达式来提取数据,需要注意标题行和数据行格式的不同,另外数据行中“时间”这一列是不规范的,设计匹配规则时为了一次性抓取数据,需要较强的兼容规则。



数据保存在csv文件中,python数据采集源代码:

<span style="font-size:14px;">#encoding:utf-8
'''
Created on 2015年1月31日
@author: Guo
'''
import urllib2,re,csv
url='http://data.earthquake.cn/datashare/globeEarthquake_csn.html'
page=urllib2.urlopen(url).read().decode('gb2312').encode('utf-8')#原网页编码方式为gb2312需要先解码后编码为平台可显示的utf-8字符格式
pattern=re.compile('<TR>.*?</TR>',re.S)
items=pattern.findall(page)
print len(items)
patternTd=re.compile('<Td.*?>(.*?)[</Td>|\n<Td]')
csvFile=file('e:/test/quake.csv','a')
csvWriter=csv.writer(csvFile)
for item in items:
cases=patternTd.findall(item)
data=[]
for case in cases:
data.append(case.strip())
csvWriter.writerow(data)
print 'Data download down'</span>
最终获得838条数据,采集结果:



接下来需要使用R对数据进行清洗,分析,可视化。首先导入数据。

<span style="font-size:14px;">quake<-read.csv("E:\\test\\quake.csv",header=T,fileEncoding='UTF-8')
quake[sample(nrow(quake),5),]
发震日期   发震时刻 纬度... 经度... 深度.km.  震级 事件类型 参考地点
314 2015-01-29 02:13:49.6   42.33   86.62        6 ML2.6 天然地震 新疆和静
397 2015-01-28 17:10:27.5   24.58  111.51        6 ML1.4 天然地震 广西钟山
814 2015-01-26 03:06:48.2   39.76  118.38       14 ML0.5 天然地震 河北唐山
481 2015-01-28 04:07:09.9   23.32  100.46        9 ML0.1 天然地震 云南景谷
200 2015-01-29 18:52:00.4   25.03   97.83       12 ML1.6 天然地震 云南盈江</span>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息