http://conansjh20.pythonanywhere.com/

 

일본 노래 가사 검색 & 독음

일본 노래 가사 검색 & 독음

conansjh20.pythonanywhere.com

(실제 홈페이지에 적용한 예 입니다. 번역은 제외)

 

1. tkinter를 이용하여 윈도우에서 실행

2. 윈도우 입력창에 가수와 노래 제목을 입력하면 함수 시작

  1) 입력 내용 앞에는 "J-Lyric" 뒤에는 "歌詞" 함께 붙여서 구글 검색

     J-Lyric에서 가사를 불러온다.

  2) 검색 결과창의 첫번째 검색 결과의 링크 불러옴

  3) 그 중에 가사 부분만 추출

  4) 가사 부분을 googletrans 로 번역하여 추출

  5) 3),4)를 표시

 

포인트

- 구글 검색 결과의 특정 태그값을 찾았지만 결국 첫번째 검색결과의 J-Lyric의 링크 주소로 찾음.

- 의외로 J-Lyric 사이트의 가사 부분은 p 태그로 둘러쌓여 있고 id가 Lyric으로 쉽게 크롤링할수 있었음.

  크롤링은 일종의 추리와 같아 html 코드의 원하는 부분만을 특정할 수 있는 공통점, 차이점, 특이점을 찾아내는 것인듯. 결국 많은 홈페이지들을 크롤링해보는 것이 능력을 기르는 방법.

- import 단어를 생략하게 해주는 import * , <br>을 포함한 특정 문자열 추출 방법 .get_text(separator="\n") , 중간중간 문자열로 만드는 str()을 염두하는 것. 등을 새로 배움.

Regular Expression(정규 표현식)!!! ㅠㅠ  

 

p.s: 번역은 처음엔 파파고를 쓰려 했는데 등록하고 키받고... 절차가 있는걸 보고 급 구글로 선회해서 사용했다.

 

 

연습을 실전처럼

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
import requests
from bs4 import BeautifulSoup as Soup
import re
from googletrans import Translator as tr
from tkinter import *
 
window = Tk()                                           # 창 생성
window.title("Conansjh20")                              # 창 이름
window.geometry("500x700+100+100")                      # 창 크기
window.resizable(True,True)                             # 창 크기 조정 가능 여부
 
def findLyrics(event):
    inputInfo = str(entry.get())
 
    keyword = "J-Lyric "+ inputInfo +" 歌詞"
    url = "https://google.com/search?q="
    googleResult = requests.get(url+keyword)
    googleResultPage = googleResult.content
    googleAnalysis = Soup(googleResultPage, "html.parser")
 
    a = re.compile(".http://.")
 
    link = googleAnalysis.find("a",{"href":a})
    b = link.get("href")
    p = re.compile("http://j-lyric.net/\w+/\w+/\w+[.]html")
    c = p.search(b)
    lyricPage = c.group()
 
    lyrics = requests.get(lyricPage)
    lyricsCode = lyrics.content
    lyricsCore = Soup(lyricsCode, "html.parser")
 
    lyricsFinal = lyricsCore.find("p",{"id":"Lyric"}).get_text(separator="\n")
    # print(lyricsFinal)
    final = str(lyricsFinal)
    trans = tr()
    transLyrics = str(trans.translate(final, dest="ko").text)
    # cut = re.compile("[^Translated(src=ja, dest=ko, text=].*[^pronunciation=None]$.*", re.DOTALL)
    # cutApply = cut.search(transLyrics)
    # transLyricsFinal = cutApply.group()
    # print(trans.translate(final, dest="ko"))
    
    label.config(text = lyricsFinal + "\n\n" + transLyrics)
 
entry = Entry(window, width = 50)
entry.bind("<Return>", findLyrics)
entry.pack()
 
label = Label(window)
label.pack()
 
window.mainloop()
cs

 

맨 위에 가수와 제목을 넣고 엔터를 치면 아래 가사와 가사 번역이 연속으로 나온다.

 

 

정말 결과물을 보면 성의없게 보이지만, 가사의 전체적인 의미만 알면된다.ㅎ

+ Recent posts