사진이 안보이신다면 https://blog.naver.com/turnbf/221375636799 에서 봐주세요.
!영화순위 기능을 추가하였다.
크롤링을 활용하여 기능을 구현하였다.
http://ticket2.movie.daum.net/movie/movieranklist.aspx 이 사이트에서 크롤링을 하였다.
구글링 해본결과 이름이 같은 li,div,span등 동일한 이름인 것들을 크롤링할때
li[0] # 1번째li
li[1] # 2번째li
li[2] # 3번째li
이러한 형식으로 동일이름인 것들을 구분해준 다는것을 알았다.
이 점을 활용하여 for문으로 총 20개의 li의 데이터를 받아오는 코드를 작성하였다.
!영화순위 를 실행한 모습
if message.content.startswith('!영화순위'):
# http://ticket2.movie.daum.net/movie/movieranklist.aspx 크롤링한 사이트
i1 = 0 # 랭킹 string값
embed = discord.Embed(
title = "영화순위",
description = "영화순위입니다.",
colour= discord.Color.red()
)
hdr = {'User-Agent': 'Mozilla/5.0'}
url = 'http://ticket2.movie.daum.net/movie/movieranklist.aspx'
print(url)
req = Request(url, headers=hdr)
html = urllib.request.urlopen(req)
bsObj = bs4.BeautifulSoup(html, "html.parser")
moviechartBase = bsObj.find('div', {'class': 'main_detail'})
moviechart1 = moviechartBase.find('ul', {'class': 'list_boxthumb'})
moviechart2 = moviechart1.find_all('li')
for i in range(0, 20):
i1 = i1+1
stri1 = str(i1) # i1은 영화랭킹을 나타내는데 사용됩니다
print()
print(i)
print()
moviechartLi1 = moviechart2[i] # i번째 LI ------------------------- ?등랭킹 영화---------------------------
moviechartLi1Div = moviechartLi1.find('div', {'class': 'desc_boxthumb'}) # 영화박스 나타내는 Div
moviechartLi1MovieName1 = moviechartLi1Div.find('strong', {'class': 'tit_join'})
moviechartLi1MovieName = moviechartLi1MovieName1.text.strip() # 영화 제목
print(moviechartLi1MovieName)
moviechartLi1Ratting1 = moviechartLi1Div.find('div', {'class': 'raking_grade'})
moviechartLi1Ratting2 = moviechartLi1Ratting1.find('em', {'class': 'emph_grade'})
moviechartLi1Ratting = moviechartLi1Ratting2.text.strip() # 영화 평점
print(moviechartLi1Ratting)
moviechartLi1openDay1 = moviechartLi1Div.find('dl', {'class': 'list_state'})
moviechartLi1openDay2 = moviechartLi1openDay1.find_all('dd') # 개봉날짜, 예매율 두개포함한 dd임
moviechartLi1openDay3 = moviechartLi1openDay2[0]
moviechartLi1Yerating1 = moviechartLi1openDay2[1]
moviechartLi1openDay = moviechartLi1openDay3.text.strip() # 개봉날짜
print(moviechartLi1openDay)
moviechartLi1Yerating = moviechartLi1Yerating1.text.strip() # 예매율 ,랭킹변동
print(moviechartLi1Yerating) # ------------------------- ?등랭킹 영화---------------------------
print()
embed.add_field(name='---------------랭킹'+stri1+'위---------------', value='\n영화제목 : '+moviechartLi1MovieName+'\n영화평점 : '+moviechartLi1Ratting+'점'+'\n개봉날짜 : '+moviechartLi1openDay+'\n예매율,랭킹변동 : '+moviechartLi1Yerating, inline=False) # 영화랭킹
await client.send_message(message.channel, embed=embed)
봇 소스파일입니다.
'디스코드 봇 개발일지' 카테고리의 다른 글
디스코드 자작봇 개발일지#10 (0) | 2018.10.30 |
---|---|
디스코드 자작봇 개발일지#9 (0) | 2018.10.30 |
디스코드 자작봇 개발일지#7 (0) | 2018.10.30 |
디스코드 자작봇 개발일지#6 (0) | 2018.10.30 |
디스코드 자작봇 개발일지#5 (0) | 2018.10.29 |