오늘은 !검색 기능을 추가하였다.
!검색 실행 화면
!검색 검색할키워드를 치면
유튜브에서 검색한 영상별 제목, 링크를 보내준다.
아래는 실행 영상이다.
!검색 실행 영상
파이썬 셀리니움을 활용하여 기능을 구현하였다.
위 블로그에서 셀리니움에대해 많이 참고하며 만들었다.
셀리니움 말고 기본크롤링 request 를 사용하여 크롤링을 하면
검색 이전결과만 나오게된다.
셀리니움은 브라우저 로그인,로그아웃등 다양한 기능을 구현할 수 있다.
셀리니움에 대해서는 위 블로그에 보면 될 듯 하다.
저번 구글번역 기능을 구현하였을때 아는게 동적페이지만 받아오는것 뿐이어서
단순 링크형태로 줬지만 셀리니움을 활용하면 이것도 해결할 수 있을 듯 보인다.
아래는 소스코드다.
if message.content.startswith('!검색'):
Text = ""
learn = message.content.split(" ")
vrsize = len(learn) # 배열크기
vrsize = int(vrsize)
for i in range(1, vrsize): # 띄어쓰기 한 텍스트들 인식함
Text = Text + " " + learn[i]
encText = Text
chromedriver_dir = r'C:\selum\chromedriver_win32\chromedriver.exe' #크롬드라이버 경로
driver = webdriver.Chrome(chromedriver_dir)
driver.get('https://www.youtube.com/results?search_query='+encText) #유튜브 검색링크
source = driver.page_source
bs = bs4.BeautifulSoup(source, 'lxml')
entire = bs.find_all('a', {'id': 'video-title'}) # a태그에서 video title 이라는 id를 찾음
embed = discord.Embed(
title="영상들!",
description="검색한 영상 결과",
colour=discord.Color.blue())
for i in range(0, 4):
entireNum = entire[i]
entireText = entireNum.text.strip() # 영상제목
print(entireText)
test1 = entireNum.get('href') # 하이퍼링크
print(test1)
rink = 'https://www.youtube.com'+test1
embed.add_field(name=str(i+1)+'번째 영상',value=entireText + '\n링크 : '+rink)
await client.send_message(message.channel,embed=embed)
'디스코드 봇 개발일지' 카테고리의 다른 글
디스코드 자작봇 개발일지#14 (0) | 2018.10.30 |
---|---|
디스코드 자작봇 개발일지#13 (0) | 2018.10.30 |
디스코드 자작봇 개발일지#11 (0) | 2018.10.30 |
디스코드 자작봇 개발일지#10 (0) | 2018.10.30 |
디스코드 자작봇 개발일지#9 (0) | 2018.10.30 |