본문 바로가기

디스코드 봇 개발일지

디스코드 자작봇 개발일지#12

사진이 안보이신다면 https://blog.naver.com/turnbf/221378308554 에서 봐주세요.


!검색 기능 추가

오늘은 !검색 기능을 추가하였다.



!검색 실행 화면

!검색 검색할키워드를 치면
유튜브에서 검색한 영상별 제목, 링크를 보내준다.

아래는 실행 영상이다.

!검색 실행 영상

파이썬 셀리니움을 활용하여 기능을 구현하였다.

위 블로그에서 셀리니움에대해 많이 참고하며 만들었다.
셀리니움 말고 기본크롤링 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)