개발/python
파이썬으로 RSS Feed generator 만들기 - 1/2
Dsp
2009. 5. 9. 17:03
이번 예제는 친구들이 워3를 했나안했나 체크해서,
rss로 제공해 주는 rss feed generator입니다. ㅎㅎ
1.
저는 Python으로 할 것이므로 mod_python을 설치/설정합니다.
당연히 PHP등 다른 언어 사용해도 무방.
> 방법 : http://cybershin.x-y.net/tt/188 참고.
2.
이 예제는 특정 사이트를 모니터링하며 해당 정보가 업데이트되면 RSS로 알려주는 예제입니다.
고로 Request가 올때마다 특정 사이트를 읽어서 답하면 너무 늦으므로 프로세스를 2개로 나눠서 실행합니다.
즉, 정보 수집을 맡는 Crawl.py 와 RSS결과를 반환해 주는 rss.py로 분리.
3. Crawl.py는 다음과 같습니다.
crontab 등으로 하루에 몇번만 실행시키면 됩니다.
>>> 나머지는 다음 글에...
rss로 제공해 주는 rss feed generator입니다. ㅎㅎ
1.
저는 Python으로 할 것이므로 mod_python을 설치/설정합니다.
당연히 PHP등 다른 언어 사용해도 무방.
> 방법 : http://cybershin.x-y.net/tt/188 참고.
2.
이 예제는 특정 사이트를 모니터링하며 해당 정보가 업데이트되면 RSS로 알려주는 예제입니다.
고로 Request가 올때마다 특정 사이트를 읽어서 답하면 너무 늦으므로 프로세스를 2개로 나눠서 실행합니다.
즉, 정보 수집을 맡는 Crawl.py 와 RSS결과를 반환해 주는 rss.py로 분리.
3. Crawl.py는 다음과 같습니다.
crontab 등으로 하루에 몇번만 실행시키면 됩니다.
#!/usr/bin/python
# -*- coding: utf-8 -*-
import urllib2, re, pickle, sys, time
from BeautifulSoup import BeautifulSoup
users = [
'alpakook', 'dspshin', 'soudz', 'milkelf', 'sacrea','again4you'
]
url_head = "http://asialadders.battle.net/war3/ladder/W3XP-player-profile.aspx?Gateway=Kalimdor&PlayerName="
def getInfo( user ):
url = url_head + user
contents = urllib2.urlopen(url).read()
soup = BeautifulSoup( contents )
B = soup('b', {'class':'small'})
date = ''
for b in B:
if str(b).find(':')>-1:
date = b.contents[0].strip().encode('ascii')
level = ''
lv = soup('div', {'style':"Z-INDEX: 200; LEFT: 75px; POSITION: relative; TOP: -25px"})
if len(lv)>0:
body = str(lv[0])
sp = body.find('Level')
ep = body[sp:].find('<')
level = body[sp:sp+ep].strip()
level = re.sub('\s', '', level)
return level, date
if __name__=="__main__":
print sys.version
print 'run crawl.py : '+ time.strftime("%B %dth %A %I:%M ",time.localtime())
info = []
for user in users:
try:
level, date = getInfo(user)
except:
print sys.exc_info()
else:
print user, level, date
info.append( (user, level, date) )
#print info
f = open('/var/www/war3/info', 'wb')
pickle.dump( info, f )
f.close()
# -*- coding: utf-8 -*-
import urllib2, re, pickle, sys, time
from BeautifulSoup import BeautifulSoup
users = [
'alpakook', 'dspshin', 'soudz', 'milkelf', 'sacrea','again4you'
]
url_head = "http://asialadders.battle.net/war3/ladder/W3XP-player-profile.aspx?Gateway=Kalimdor&PlayerName="
def getInfo( user ):
url = url_head + user
contents = urllib2.urlopen(url).read()
soup = BeautifulSoup( contents )
B = soup('b', {'class':'small'})
date = ''
for b in B:
if str(b).find(':')>-1:
date = b.contents[0].strip().encode('ascii')
level = ''
lv = soup('div', {'style':"Z-INDEX: 200; LEFT: 75px; POSITION: relative; TOP: -25px"})
if len(lv)>0:
body = str(lv[0])
sp = body.find('Level')
ep = body[sp:].find('<')
level = body[sp:sp+ep].strip()
level = re.sub('\s', '', level)
return level, date
if __name__=="__main__":
print sys.version
print 'run crawl.py : '+ time.strftime("%B %dth %A %I:%M ",time.localtime())
info = []
for user in users:
try:
level, date = getInfo(user)
except:
print sys.exc_info()
else:
print user, level, date
info.append( (user, level, date) )
#print info
f = open('/var/www/war3/info', 'wb')
pickle.dump( info, f )
f.close()
>>> 나머지는 다음 글에...