오늘은 저번시간에 실습한 코로나 정보 챗봇 기능에 추가하여 네이버 영화순위 정보를 추가해보겠습니다.
앞으로도 모든 실습은 기본 코드에 추가하는 식으로 구현하겠습니다.
네이버 영화순위에 나오는 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 |
결과는 아래와 같습니다. 각 영화정보가 하나의 메세지별로 출력됨을 알 수 있습니다.
'웹 크롤링&API' 카테고리의 다른 글
텔레그램 챗봇 만들기 5단계) 실시간 동네 날씨 얻어오기 (1) | 2021.09.09 |
---|---|
텔레그램 챗봇 만들기 4단계) 멜론 차트 1~10위 곡 정보 얻기 (0) | 2021.09.09 |
텔레그램 챗봇 만들기 2단계) 코로나 관련 정보 얻기 (0) | 2021.09.09 |
공공데이터 api 신청 후 서비스 호출 에러 (0) | 2021.09.09 |
텔레그램 챗봇 만들기 1단계) 텔레그램 설치 및 전송-응답 (2) | 2021.09.08 |