개발/python

[Python] 웹페이지 내에서 원하는 부분 가져오기.

Dsp 2007. 11. 28. 23:46
daum에 보면 트렌드 차트라는 서비스를 하고 있다.
왠만한 것들의 트렌드를 알 수 있는 서비스인데,
불행히도 인기가 많은 것들에 대해서만 데이터를 제공해준다.

나는 내 책이 어느 정도 팔렸는지 동향을 알고 싶은데,
이런 정보를 제공해 주는 곳이 없으니 어쩔수 없이 간단하게 스크립트를 짜 돌려보았다.



위의 도표는 아래의 python 코드를 2주일간 돌린 결과를 엑셀로 뿌린 것이다.
아래의 코드는 단순히 파일에 내가 원하는 부분을 덮어쓰는 역할을 하는데,
매일 실행시키려면 linux의 crontab이나, windows의 예약작업을 이용하면 된다.

간단한 코드이므로 자세한 설명은 생략하고 간단하게 설명을 하자면,
해당 url의 페이지를 읽어와서, 내가 원하는 판매지수가 있는 위치의 정보를 what_i_want에 긁어온다.
그리고 그 결과는 'score.txt'에 append한다.

자, 이제 코드 나간다.


import urllib2, time

def getContent( url ):
        req = urllib2.Request( url )
        response = urllib2.urlopen(req)
        return response.read()

if __name__ == "__main__":
        curtime = time.localtime()
        curday = "%d/%02d/%02d"%(curtime[0],curtime[1],curtime[2])
        
        url = 'http://www.yes24.com/Goods/FTGoodsView.aspx?goodsNo=2549646&CategoryNumber=001001003011016'
        content = getContent( url )
        
        startword = '<font color=\'#AFAFAF\'> / </font>'
        endword = '<a'
        startpoint = content.find(startword)
        
        startpoint += len(startword)
        endpoint = content[startpoint:].find(endword)
        
        what_i_want = content[startpoint:startpoint+endpoint]
        score = what_i_want[-5:]
        
        f = open('score.txt','a')
        f.write("%s\t%s\n"%(curday, score))
        
        print "%s\t%s\n"%(curday, score)


BeautifulSoup 등을 사용해서 보다 고상하게 가져올 수도 있지만,
이 경우에는 별로 그럴 필요가 없으므로 무식하게 find를 사용했다. --;


태그 : python, crawl