def getwordcounts(url):
d=feedparser.parse(url)
wc={}
for e in d.entries:
if 'summary' in e: summary=e.summary
else: summary=e.description
words=getwords(e.title+' '+summary)
for word in words:
wc.setdefault(word,0)
wc[word]+=1
return d.feed.title, wc
파싱하고자 하는 URL이 유효한 피드가 아닌 경우, 예를 들어 URL 이 일반 웹페이지거나 피드가 없는 경우 아래와 같은 에러를 일으킨다.
AttributeError at
object has no attribute 'title'
이 경우 getattr 을 이용하면 title이 없는 경우에도 에러 페이지를 출력하지 않고 처리가 가능하다.
def getwordcounts(url):
d=feedparser.parse(url)
wc={}
for e in d.entries:
if 'summary' in e: summary=e.summary
else: summary=e.description
words=getwords(e.title+' '+summary)
for word in words:
wc.setdefault(word,0)
wc[word]+=1
return getattr(d.feed, 'title', 'Unknown title'), wc
아래 페이지 참조.
getattr(object, name[, default])
Return the value of the named attribute of object. name must be a string. If the string is the name of one of the object’s attributes, the result is the value of that attribute. For example, getattr(x, 'foobar') is equivalent to x.foobar. If the named attribute does not exist, default is returned if provided, otherwise AttributeError is raised.
https://docs.python.org/2/library/functions.html
'프로그래밍 Programming' 카테고리의 다른 글
셀레늄(selenium)을 이용한 네이버 자동검색 및 결과 클릭 (0) | 2015.11.28 |
---|---|
셀레늄(Selenuim) 설치 및 테스팅 (윈도우/파이썬) (0) | 2015.11.28 |
feedparser 5.2.1 (universal feed parser) (0) | 2015.11.14 |
render_to, render_to_response (0) | 2015.10.26 |
ImportError: No module named mechanize (0) | 2015.10.23 |