/**
* 作者:张荣华
* 日期:2009-02-26
**/
晚上闲来无聊,于是用python写了一个抓取天气信息的脚本,您要是不想去网站上看天气,每天开机的时候运行一下脚本就完事了
同学们请看
#encoding:UTF-8
'''
@author: ahuaxuan (张荣华)
@date: 2009-02-06
'''
import re
from httplib import HTTPConnection
from datetime import datetime
import urllib
import urllib2
import sys
header = {}
header['User-Agent'] = 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.3) Gecko/2008092510 Ubuntu/8.04 (hardy) Firefox/3.0.3'
header['Accept-Language'] = 'en-us,en;q=0.7,zh-cn;q=0.3'
header['Accept-Encoding'] = 'UTF-8'
header['Accept-Charset'] = 'ISO-8859-1,utf-8;q=0.7,*;q=0.7'
header['Keep-Alive'] = '300'
header['Connection'] = 'keep-alive'
header['Referer'] = 'http://www.weather.com.cn/'
def postData(url, body):
opener = urllib2.build_opener()
urllib2.install_opener(opener)
req = urllib2.Request(url = url, data = urllib.urlencode(body), headers=header)
u = urllib2.urlopen(req)
htmlSource = u.read()
return htmlSource
def getData(url):
req = urllib2.Request(url,headers = header)
res = urllib2.urlopen(req)
html = res.read()
res.close()
return html
todayPattern = '<div class="box_contenttodayinwea" id="c_1_1">[\s]*?'+\
'<p>[\s]*?<span>[\s\S]*?</span>[\s]*?' + \
'<em><strong>(?P<wea>[\s\S]*?)</strong></em>[\s]*?' + \
'<em class="no_today">(?P<temp>[\s\S]*?)</em>[\s]*?' + \
'<em>(?P<wind>[\s\S]*?)</em><br/>[\s]*?</p>'
futurePattern = '<div class="fut_weatherbox7">[\s]*?' + \
'<h3>(?P<date>[\s\S]*?)</h3>[\s]*?'+ \
'<p>(?P<aa>[\s\S]*?)</p>[\s]*?'+ \
'<h4 class="temp00_dn">(?P<wea>[\s\S]*?)</h4>[\s]*?'+ \
'<h4 class="temp01_dn">(?P<tempH>[\s\S]*?)</h4>[\s]*?'+ \
'<h4 class="temp02_dn">(?P<tempL>[\s\S]*?)</h4>[\s]*?'+ \
'<h4 class="temp03_dn"><a name="sk">(?P<wind>[\s\S]*?)</a></h4>[\s]*?'+ \
'</div>'
'''
return the json format data of weather
http://search.weather.com.cn/static/url.php
'''
def getWeather(cityName, url):
body = {}
body['cityinfo'] = cityName
text = postData(url, body)
pattern = re.compile("<meta http-equiv=\"refresh\" content=\"0;URL=([\\s\\S]*?)\">")
rlst = pattern.findall(text)
text = getData(rlst[0])
fieldList = ['wind', 'wea', 'temp']
lst = parserWeaPattern(fieldList, text, todayPattern)
fieldList2 = ['wind', 'wea', 'date', 'tempH', 'tempL']
lst2 = parserWeaPattern(fieldList2, text, futurePattern)
print u"--------------今日天气:-------------".encode("GBK")
for aa in lst:
for key,value in aa.items():
print value
print u"\r\n--------------未来几天:--------------".encode("GBK")
for aa in lst2:
print '%s,%s,%s,%s,%s'%(aa['date'],aa['wind'],aa['wea'],aa['tempH'],aa['tempL'])
return lst
def parserWeaPattern(fieldList, text, pattern):
list = []
p = re.compile(pattern)
iterator = p.finditer(text)
for matcher in iterator:
data = {}
for field in fieldList:
data[field] = matcher.group(field).encode("GBK")
list.append(data)
return list
if __name__ == '__main__':
#也可以用区号
city = u'上海'.encode("GBK")
reload(sys)
sys.setdefaultencoding('UTF-8')
print city
getWeather(city, 'http://search.weather.com.cn/static/url.php')
运行后的结果为:
上海
--------------今日天气:-------------
多云
14℃/ 6℃
东南风3-4级
--------------未来几天:--------------
7日星期六,东南风3-4级,多云,高温:15℃,低温:7℃
8日星期日,东南风4-5级,多云转阴,高温:14℃,低温:9℃
9日星期一,微风,晴,高温:10℃,低温:4℃
10日星期二,微风,晴,高温:16℃,低温:9℃
11日星期三,微风转北风3-4级,晴,高温:21℃,低温:14℃
12日星期四,北风3-4级转微风,晴转中雨,高温:21℃,低温:16℃
分享到:
相关推荐
这是一个用Python编写抓取天气预报的代码示例,用python写天气查询软件程序很简单。这段代码可以获取当地的天气和、任意城市的天气预报,原理是根据url找到网站截取相应的数据展现。 python抓取广州天气并分析 实例...
参考一篇文章http://www.cnblogs.com/chenkun24/archive/2012/10/06/2713348.html, 由于作者没有给出源码,自己尝试练手小程序,非常之小!
使用python抓取上交所上市公司信息和下载深交所上市公司信息,然后保存到mysql中,并可以从mysql导出到excel。
使用Python抓取京东数据,并用mySQL存取数据
python爬虫抓取北京天气的一个超级简单的案例
python 抓取百度云分享数据,百度云最新接口抓取分享链接。
python抓取
Python 抓取 图片Python 抓取 图片Python 抓取 图片Python 抓取 图片Python 抓取 图片Python 抓取 图片
python 抓取1688店铺产品详情,爬虫
在Jupyter环境利用Python核实现网页信息的抓取。
python3.0爬虫抓取北京天气json
主要介绍了Python实现抓取HTML网页并以PDF文件形式保存的方法,结合实例形式分析了PyPDF2模块的安装及Python抓取HTML页面并基于PyPDF2模块生成pdf文件的相关操作技巧,需要的朋友可以参考下
Python 抓取百度贴吧里边的图片内容
主要介绍了python抓取并保存html页面时乱码问题的解决方法,结合实例形式分析了Python页面抓取过程中乱码出现的原因与相应的解决方法,需要的朋友可以参考下
python3.5爬虫抓取北京天气
基于python抓取豆瓣电影TOP250的数据及进行分析.pdf
使用python抓取微信公众号中的文章
python抓取百度搜索的数据,智普推荐使用教程