* ASP 강좌로 유명한 taeyo.net에 재미있는 강좌가 있어서 파이썬 버전으로 옮겨봅니다.
세계의 인구는 몇명일까요? 미국의 인구 조사 사이트에 가보면 현재의 세계 인구를 알 수 있답니다.
http://www.census.gov/population/popclockworld.html
다음은 세계 인구를 알려주는 웹페이지를 읽어서 인구수를 출력해주는 파이썬 스크립트입니다.
#-*- coding: cp949 -*- import urllib, re url = 'http://www.census.gov/population/popclockworld.html' text = urllib.urlopen(url).read() pattern = '<div id="worldnumber">([0-9,]+)</div>' match = re.search(pattern, text) population = match.group(1) print '현재 세계의 인구는 %s명입니다' % population
실행시켜보세요!
urllib.urlopen(url)
urllib 모듈의 urlopen() 함수는 인자로 주어진 주소의 웹페이지를 돌려주는데, 이때 리턴되는 객체는 마치 파일처럼 사용할 수가 있습니다. 그래서 read() 함수를 써서 그 내용을 얻어냈지요.
text = urllib.urlopen(url).read() pattern = '<div id="worldnumber">([0-9,]+)</div>' match = re.search(pattern, text) population = match.group(1)
정규표현식(re) 모듈을 이용하여 세계 인구 웹페이지에서 <div>와 </div> 사이에 있는 총인구수만 검색하는 부분입니다. re에 대해서 설명드리자면 길어지니까 아래의 참고 자료를 참고해주세요. ^^;
이렇게해서 웹페이지에서 세계 인구를 얻어오는 프로그램을 만들어보았습니다.
그런데 이 프로그램에는 한 가지 문제점이 있네요. 인구 조사 사이트에서 웹페이지를 한번 얻어오게 되면 그 내용을 기억하고 있다가(다른 말로 캐쉬한다고도 하죠), 다음번에는 기억하고 있는 페이지의 내용을 그대로 사용합니다. 그렇기 때문에 계속 늘어나는 인구를 보여주지 못하고, 계속 똑같은 숫자만 보여주게 되죠.
문제를 해결하려면 urllib보다 좀 더 구체적으로 일을 시킬 수 있는 httplib 모듈을 써서, 세계 인구 페이지를 캐쉬하지 말고 새로 얻어오라고 알려줘야겠네요.
#-*- coding: cp949 -*- import httplib, re host = 'www.census.gov' h = httplib.HTTP(host) h.putrequest('GET', '/population/popclockworld.html') h.putheader('Host', host) h.putheader('Accept', 'text/html') h.putheader('Cache-Control', 'no-cache') h.endheaders() errcode, errmsg, headers = h.getreply() f = h.getfile() text = f.read() f.close() pattern = '<div id="worldnumber">([0-9,]+)</div>' match = re.search(pattern, text) population = match.group(1) print '현재 세계의 인구는 %s명입니다.' % population
세계 인구야 시시각각으로 늘어나고 있긴 하지만, 4월이 되면 소중한 사람이 한 명 더 태어나서 세계 인구를 늘려줄 겁니다. 엄마 배를 볼록하게 만들고 있는 저희 아이가 밖으로 나오거든요~(나왔습니다 ^O^)
참고:
파이썬으로 하는 웹 클라이언트 프로그래밍
정규표현식, Dive into Python
관련 게시물:
http://pythonlab.org/bbs/view.php?id=python&no=6
http://bbs.python.or.kr/viewtopic.php?p=73907&sid=98857f146c95971bb5d7e3b923116144
출처 : wikidocs 왕초보를 위한 파이썬
'Python > 왕초보를 위한 파이썬' 카테고리의 다른 글
13.3. 파이썬에서 MySQL 사용하기 (0) | 2012.04.12 |
---|---|
11. 네트워크 (0) | 2012.04.12 |
10.1. DIR 흉내내기 (0) | 2012.04.12 |
10. 시스템 (0) | 2012.04.12 |
9.1. Tkinter에서 마우스 이벤트 처리 (0) | 2012.04.12 |
댓글