<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>幻想曲.Net &#187; python</title>
	<atom:link href="http://yibin.us/tag/python/feed" rel="self" type="application/rss+xml" />
	<link>http://yibin.us</link>
	<description>面朝大海，春暖花开</description>
	<lastBuildDate>Fri, 17 Jun 2011 01:57:39 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>天气预报查询器-python版</title>
		<link>http://yibin.us/archives/6644</link>
		<comments>http://yibin.us/archives/6644#comments</comments>
		<pubDate>Fri, 09 Oct 2009 07:14:29 +0000</pubDate>
		<dc:creator>幻想曲</dc:creator>
				<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://yibin.us/?p=6644</guid>
		<description><![CDATA[看了几天的python,写了个天气预报查询器玩玩 数据取自http://php.weather.sina.com.cn/ 运行效果： 主要用到了urllib2与re模块 urllib2模块来用发起一个HTTP GET请求，并获取响应。 re模块用正则匹配需要的内容。 代码写得比较烂，全当是熟悉语法了。]]></description>
			<content:encoded><![CDATA[<p>看了几天的python,写了个天气预报查询器玩玩</p>
<p>数据取自http://php.weather.sina.com.cn/</p>
<p>运行效果：</p>
<p><img class="alignnone size-full wp-image-6645" title="ScreenShot00051" src="http://yibin.us/wp-content/uploads/2009/10/ScreenShot00051.jpg" alt="ScreenShot00051" width="556" height="352" /><br />
<span id="more-6644"></span><br />
主要用到了urllib2与re模块</p>
<p>urllib2模块来用发起一个HTTP GET请求，并获取响应。</p>
<p>re模块用正则匹配需要的内容。</p>
<p>代码写得比较烂，全当是熟悉语法了。</p>
<pre class="brush: python; title: ; notranslate">
#coding=gb2312
import sys,urllib2,re
def GetWeather(city):
    url = 'http://php.weather.sina.com.cn/search.php?city='+city+'&amp;dpc=1'
    response = urllib2.urlopen(url)
    result=response.read() #.decode('utf-8').encode(&quot;gbk&quot;)
    mathes = re.findall(r'&lt;!-- box begin--&gt;([\s\S]+?)&lt;!-- box end--&gt;',result)
    if len(mathes) == 0:
    	print '没有找到'
    	return
    data = []

    #找城市名
    cityname = re.findall(r'&lt;div class=&quot;nav21&quot;&gt;([\s\S]+?)&lt;\/div&gt;',result)
    if len(cityname) &gt; 0:
    	city = filterHtmlTags(cityname[0])
    #天气
    try:
        data.append(re.findall(r'&lt;h2&gt;([\s\S]+?)&lt;\/h2&gt;',mathes[0])[0])
    except IndexError:
    	data.append('暂无数据')
    #温度
    try:
        data.append(re.findall(r'&lt;div class=&quot;w-number&quot;&gt;([\s\S]+?)&lt;\/div&gt;',mathes[0])[0])
    except IndexError:
    	data.append('暂无数据')
    #风向
    try:
        data.append(re.findall(r'&lt;li&gt;风向：([\s\S]+?)&lt;\/li&gt;',mathes[0])[0])
    except IndexError:
    	data.append('暂无数据')
    #风力
    try:
        data.append(re.findall(r'&lt;li&gt;风力：([\s\S]+?)&lt;\/li&gt;',mathes[0])[0])
    except IndexError:
    	data.append('暂无数据')
    #紫外线
    try:
        data.append(re.findall(r'&lt;li&gt;紫外线：([\s\S]+?)&lt;\/li&gt;',mathes[0])[0])
    except IndexError:
    	data.append('暂无数据')
    #舒适度
    try:
        data.append(re.findall(r'&lt;li&gt;舒适度：([\s\S]+?)&lt;\/li&gt;',mathes[0])[0])
    except IndexError:
    	data.append('暂无数据')
    #防晒指数
    try:
        data.append(re.findall(r'&lt;li&gt;防晒指数：([\s\S]+?)&lt;\/li&gt;',mathes[0])[0])
    except IndexError:
    	data.append('暂无数据')

    #明天
    t = []
    t.append(re.findall(r'&lt;p&gt;天气：([\s\S]+?)&lt;\/p&gt;',mathes[1])[0])
    t.append(re.findall(r'&lt;p&gt;温度：([\s\S]+?)&lt;\/p&gt;',mathes[1])[0])
    t.append(re.findall(r'&lt;p&gt;风力：([\s\S]+?)&lt;\/p&gt;',mathes[1])[0])
    data.append(t)
    #后天
    t = []
    t.append(re.findall(r'&lt;p&gt;天气：([\s\S]+?)&lt;\/p&gt;',mathes[2])[0])
    t.append(re.findall(r'&lt;p&gt;温度：([\s\S]+?)&lt;\/p&gt;',mathes[2])[0])
    t.append(re.findall(r'&lt;p&gt;风力：([\s\S]+?)&lt;\/p&gt;',mathes[2])[0])
    data.append(t)

    for a in range(len(data)):
    	data[a] = filterHtmlTags(data[a])

    result =  &quot;城市:\t%s\n----今日天气----\n天气:\t%s\n温度:\t%s\n风向:\t%s\n风力:\t%s\n紫外线:\t%s\n舒适度:\t%s\n防晒指数:\t%s\n----明日天气----\n天气:\t%s\n温度:%s\n风力:%s\n----后天天气----\n天气:%s\n温度:%s\n风力:%s\n&quot; % (city,data[0],data[1],data[2],data[3],data[4],data[5],data[6],data[7][0],data[7][1],data[7][2],data[8][0],data[8][1],data[8][2])
    print result

def filterHtmlTags(a):
	if isinstance(a,basestring) :
	    a = re.sub(r'&lt;[^&gt;]+&gt;','',a)
	    a = re.sub(r'\s+','',a)
	if isinstance(a,list):
		for i in range(len(a)):
			a[i] = filterHtmlTags(a[i])
	return a
if __name__==&quot;__main__&quot;:
	while True:
	    city = raw_input('请输入城市名 &gt;&gt;&gt; ')
	    if len(city) == 0 :
		    print '退出'
		    sys.exit(0)
	    GetWeather(city)
</pre>
]]></content:encoded>
			<wfw:commentRss>http://yibin.us/archives/6644/feed</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
	</channel>
</rss>

