2012-04-19 7 views
0

私はPythonを学ぼうとしています。私の唯一の経験はApplescriptingであり、これまでどおりに学ぶのは簡単ではありません。天候を解析するスクリプト

xml気象サイトを解析しようとしていますが、今まで私が必要とするデータがありますが、それをさらに処理するためのリストに入れる方法がわかりません。誰も助けることができますか?

from BeautifulSoup import BeautifulSoup 
import xml.etree.cElementTree as ET 
from xml.etree.cElementTree import parse 
import urllib2 

url = "http://www.weatheroffice.gc.ca/rss/city/ab-52_e.xml" 
response = urllib2.urlopen(url) 
local_file = open("\Temp\weather.xml", "w") 
local_file.write(response.read()) 
local_file.close() 

invalid_tags = ['b', 'br'] 

tree = parse("\Temp\weather.xml") 

stuff = tree.findall("channel/item/description") 

item = stuff[1] 

parsewx = BeautifulSoup(stuff[1].text) 

for tag in invalid_tags: 
for match in parsewx.findAll(tag): 
    match.replaceWithChildren() 

print parsewx 
+0

一般的な提案:一時ファイルを処理するには、通常は['tempfile module'](http://docs.python.org/library/tempfile.html)を使用する方がよいでしょう。なぜなら、競合を回避し、それは終わった。また、 '' \\ Temp \\ weather.xml ''や' r "\ Temp \ weather.xml" 'を使用してください。そうしないと、バックスラッシュ文字をエスケープコードとして扱います。 '\ T'と' \ w'は有効なエスケープではないので、うまく動作しますが、 '\ t'や' \ n'を試してみると驚くほど壊れてしまいます。あなたが[lxml](http://lxml.de/)を使用するならば、あなたのためにこれすべてを扱います。あなたは単に 'URLを'解析することができます。 – Dougal

+2

ループの最後の2つにインデントの問題があります... – jadkik94

答えて

0

XMLは構造化されたデータなので、BeautifulSoupはタグのtreeを返します。 documentationには、そのツリーのsearchnavigateへの広範な情報があります。