Programming/Python2013. 4. 18. 05:50

지난번에 아주 단순 무식하게 HTML을 파싱해서 날씨 가져오는 스크립트를 포스팅 한 적이 있었는데,

도저히 코드를 봐줄 수도 없고.. 심지어 그 코드에는 심각한 문제가 있었다!

(문제는 비밀입니다.. 궁금하신분은 한번 알아보세요ㅋ 힌트는 리눅스의 권한)


어쨌든 그래서 새로운 코드를 다시 짜 보았다.

역시 코드가 딱히 마음에 들진 않지만.. BeautifulSoup을 처음으로 사용하는 거라 그렇다고 위안말도안되는 변명을 하며....


#!/usr/bin/env python
#-*- coding:utf-8 -*-

import urllib
from BeautifulSoup import BeautifulSoup
import traceback
from time import localtime, strftime

def display(result):
    print
    print 'Weather in Seoul, Asia at ' + strftime('%H:%M', localtime()) + '\n'
    print 'Condition: ' + result['cond']
    print 'Temparature: ' + result['temp'] + u"\N{DEGREE SIGN}" + 'C'
    print 'RealFeel: ' + result['realfeel'] + u"\N{DEGREE SIGN}" + 'C'
    print result['humid']
    print result['cloud']
    print

def main():
    html = urllib.urlopen("http://www.accuweather.com/en/kr/seoul/226081/current-weather/226081")
    soup = BeautifulSoup(html)

    soup = soup.find('div', {'id':'detail-now'})

    result = {}

    while soup:
        if soup.get('class') == 'cond':
            result['cond'] = soup.text
        elif soup.get('class') == 'temp':
            result['temp'] = soup.text.replace("°", "")
        elif soup.get('class') == 'realfeel':
            s = soup.text.replace("°", "")
            result['realfeel'] = s.replace("RealFeel® ", "")
        elif soup.get('cellspacing') == None and soup.get('class') == 'stats':
            ss = soup.findAll('li')
            for li in ss:
                if 'Humid' in li.text:
                    result['humid'] = li.text.replace(":", ": ")
                elif 'Cloud' in li.text:
                    result['cloud'] = li.text.replace(":", ": ")
            break

        soup = soup.findNext()

    display(result)


if __name__ == "__main__":
    try:
        main()
    except:
        traceback.print_exc()

뭐 어찌됐든 쓸데없는 쓰레기 파일을 만들지도 않고... 더 고치기는 너무 귀찮으니 BeautifulSoup 라이브러리는 언젠가 나중에 더 익숙해지기로 하고 일단 저렇게 써야겠다.


날씨를 가져오는 accuweather.com 해당 페이지의 사이즈가  커서 여전히 속도 문제는 어쩔 수 없는듯하다.


인터넷을 연결해야하는데다가 외국 사이트라 느린 것도 같지만 분단위로 날씨를 업데이트! 해주니 그걸로 만족해야겠다.

'Programming > Python' 카테고리의 다른 글

A* algorithm implementation  (1) 2013.06.14
pygame 설치  (0) 2013.05.02
날씨 가져오는 스크립트  (0) 2013.04.17
쉬워 보이는 언어 Python  (0) 2011.12.27
점프 투 파이썬(Jump to Python)  (0) 2011.12.20
Posted by Tanto