《鲜活的数据-第2章 处理数据》有关代码
来源:互联网 发布:甘肃干部网络考试答案 编辑:程序博客网 时间:2024/05/18 13:47
2.1.3 自动收集数据
import urllib2
page = urllib2.urlopen("https://www.wunderground.com/history/airport/ZHCC/2017/9/8/DailyHistory.html")
from BeautifulSoup import BeautifulSoup
soup = BeautifulSoup(page)
images = soup.findAll('img')
first_image = images[0]
print first_image
wxvalue = soup.findAll(attrs={"class":"wx-value"})
print wxvalue
print wxvalue[0]
print wxvalue[0].span.string #AttributeError: 'NoneType' object has no attribute 'string'
print wxvalue[0].contents[0].string
for m in range(1, 13): for d in range(1, 32): # Check if already gone through month if (m == 2 and d > 28): break elif (m in [4, 6, 9, 11] and d > 30): break # Open wunderground.com url timestamp = '2016' + str(m) + str(d) print "Getting data for " + timestamp #url = "http://www.wunderground.com/history/airport/KBUF/2009/" + str(m) + "/" + str(d) + "/DailyHistory.html" url = "https://www.wunderground.com/history/airport/ZHCC/2016/" + str(m) + "/" + str(d) + "/DailyHistory.html" page = urllib2.urlopen(url) # Get temperature from page soup = BeautifulSoup(page) # dayTemp = soup.body.nobr.b.string dayTemp = soup.findAll(attrs={"class":"wx-value"})[0].contents[0].string # Format month for timestamp if len(str(m)) < 2: mStamp = '0' + str(m) else: mStamp = str(m) # Format day for timestamp if len(str(d)) < 2: dStamp = '0' + str(d) else: dStamp = str(d) # Build timestamp timestamp = '2016' + mStamp + dStamp # Write timestamp and temperature to file print timestamp + ',' + dayTemp + '\n'
终端输入并运行文件
python get-weather-data.py
2.2.3 用代码来格式化
1. CSV转为XML
import csv
reader = csv.reader(open('wunder-data.txt', 'r'), delimiter=",")
print '<weather_data>'for row in reader: print '<observation>' print '<date>' + row[0] + '</date>' print '<temperature>' + row[1] + '</temperature>' print '</observation>'print '</weather_data>'
终端输入并运行文件
python csv2xml.py >wunder-data1.xml
f = open('wunder-data.xml', 'w')
f.write('<weather_data>')
for row in reader: f.write( '<observation>') f.write( '<date>' + row[0] + '</date>') f.write( '<temperature>' + row[1] + '</temperature>') f.write( '</observation>')f.write( '</weather_data>')
f.close()
2. XML转为CSV
from BeautifulSoup import BeautifulStoneSoup
f = open('wunder-data.xml', 'r')xml = f.read()soup = BeautifulStoneSoup(xml)observations = soup.findAll('observation')for o in observations: print o.date.string + "," + o.temperature.string
终端输入并运行文件
python xml2csv.py >wunder-data1.txt
3. CSV转为JSON
import csv
reader = csv.reader(open('wunder-data.txt', 'r'), delimiter=",")
print '{ "observations": ['rows_so_far = 0for row in reader: rows_so_far += 1 print '{' print '"date": ' + '"' + row[0] + '", ' print '"temperature": ' + row[1] if rows_so_far < 365: print " }," else: print " }"print "] }"
终端输入并运行文件
python csv2json.py >wunder-data1.json
4.在循环中加入新的逻辑
import csv
reader = csv.reader(open('wunder-data.txt', 'r'), delimiter=",")
for row in reader: if int(row[1]) <= 32: is_freezing = '1' else: is_freezing = '0' print row[0] + "," + row[1] + "," + is_freezing
终端输入并运行文件
python freezingInfo.py >wunder-data-fz.txt
阅读全文
0 0
- 《鲜活的数据-第2章 处理数据》有关代码
- 鲜活的数据 : 数据可视化指南
- 鲜活的数据:数据可视化指南.pdf 免费下载
- flex 有关的处理数据
- 走进小作坊(二十二)----鲜活的数据
- 有关海量数据的处理简单总结
- 一些有关检查数据的JS代码
- 一些有关检查数据的JS代码
- 一些有关检查数据的JS代码
- 第7章任务2:对数据的异常处理
- 第 2 章 — 处理数据
- 第3章 处理数据
- 《利用Python进行数据分析》第5章 pandas的数据汇总与处理缺失数据
- 读《代码大全》第2版 第13章 不常见的数据类 ~ 19章
- 有关数据的操作
- 【代码】有关于数据转移方面的新总结
- GridView处理数据代码
- 全面的MySQL处理重复数据代码
- [js高手之路]深入浅出webpack教程系列4-插件使用之html-webpack-plugin配置(上)
- XListView 下拉刷新 上拉分页加载更多
- 4、SONIX单片机TC0、TC1基本定时与计数功能
- codevs3115 高精度减法
- angular+两个按钮一个暂停一个停止
- 《鲜活的数据-第2章 处理数据》有关代码
- 数据结构编程笔记二十五:第九章 查找 二叉排序树(动态查找表)查找算法的实现
- MFC学习笔记-界面02
- 5、SONIX单片机TC0、TC1的pwm输出
- Keil ARM编译器命令行编译中实现头文件依赖的自动推导
- Java基础部分记录
- Unity3D_元件的复制
- Android视频播放学习笔记
- 微信 iOS 收款到帐语音提醒开发总结