오늘은 저번시간에 실습한 코로나 정보 챗봇 기능에 추가하여 네이버 영화순위 정보를 추가해보겠습니다.

 

앞으로도 모든 실습은 기본 코드에 추가하는 식으로 구현하겠습니다.

 

네이버 영화순위에 나오는 1~5순위 영화 정보를 하나씩 출력하는 식으로 구현할텐데,

한번에 1~5순위 까지 모든 영화정보를 하나의 메시지로 출력하면 최초 영화에 대한 프리뷰 화면만 나오고 

나머지 2~5순위 영화는 영화 이름, 링크만 나오게 되어서 저는 하나의 메시지가 아닌 5개 메세지를 전송받아서 각 영화에 대한 짤막한 정보를 얻게 구현했습니다.

 

아래 링크에서 역시나 F12를 눌러서 우리가 얻어올 영화 이름, 프리뷰, 사진 정보 컴포넌트를 조사합니다.

http://movie.naver.com/movie/running/current.nhn

오른쪽 lst_sdc 클래스를 펼쳐보면 왼쪽 영화 사진/이름/정보 들이 쭉 나열이 되어있습니다.

이 정보를 크롤링하여 각 영화에 대한 정보를 얻어올 수 있습니다.

 

추가한 영화 크롤링 함수입니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
def movie_chart_crawling():
    session=requests.Session()
    #영화 크롤링 사이트
    addr='http://movie.naver.com/movie/running/current.nhn'
    req=session.get(addr)
    soup=BeautifulSoup(req.text,'html.parser')
    titles=soup.find_all('dl',class_='lst_dsc')
    cnt=1
    output=" "
 
    # 영화제목+ 링크가 순서대로 5개 출력되고 각 영화별 설명이 짤막하게 들어가고 + 출력까지 
    for title in titles:
        output+=str(cnt)+'위: '+title.find('a').text+'\n'+addr+title.find('a')['href']+'\n'
        #여기서 푸쉬해서 5개 각 저옵가 메세지로 출력되게끔
        bot.send_message(chat_id=id,text=output)
        output="" 
        cnt+=1
        if cnt==6:
            break
    #return output 
  
cs

 

추가한 챗봇 송수신 코드입니다.

전에 실습한 코로나 관련 기능 구현은 함수에서 값을 리턴받은 뒤 그 내용을 출력하였지만

이번에는 각 영화에 대한 정보를 하나씩 출력하기 위해 함수 내부에서 크롤링 하고 출력까지 진행하였습니다.

1
2
3
4
5
6
elif(user_text=="영화"):
        bot.send_message(chat_id=id, text="조회 중 입니다...")
        movie_chart=movie_chart_crawling()
        #출력은 위의 함수 내부에서 한다.
        #bot.send_message(chat_id=id,text=movie_chart)
        bot.sendMessage(chat_id=id,text=info_message)
cs

 

결과는 아래와 같습니다. 각 영화정보가 하나의 메세지별로 출력됨을 알 수 있습니다.

+ Recent posts