Genius의 Python을 사용하여 노래 가사를 스크랩하기 위한 지침

게시 됨: 2019-08-08
목차
Genius에서 데이터를 크롤링하려는 이유는 무엇입니까?
Python을 사용하여 Genius의 노래 가사를 웹 스크래핑하는 방법은 무엇입니까?
코드는 어디에 있습니까?
코드 설명
행동 강령의 예
이 솔루션은 얼마나 확장 가능합니까?

랩 천재란 ?

2009년 Rap-Genius로 처음 시작된 것은 이제 Genius 라는 독특한 음악 지식 공유 미디어 회사로 발전하여 매달 1억 명이 넘는 사람들에게 서비스를 제공합니다 . 이 블로그에서는 단계별 가이드 에서 Python을 사용하여 노래 가사를 웹 스크래핑 하는 방법을 배웁니다.

음악을 좋아하는 대부분의 인터넷 사용자는 Genius 에 익숙해야 합니다 . 그것은 빠르게 성장 하는 웹사이트로서 노래 뒤에 숨겨진 내용, 아티스트가 작곡할 때 어떤 생각을 했는지 등을 공유 합니다 . Ariana Grande와 Kendrick Lamar와 같은 유명한 예술가들도 Genius와 협력하여 세계에 그들의 예술에 대한 더 깊은 통찰력을 제공합니다.

목적이 무엇이든 노래 가사를 크롤링하려는 사람이 있다면 Genius가 방문할 웹사이트입니다. 2,500만 곡 이상의 노래, 앨범, 아티스트 및 주석에 대한 데이터베이스를 통해 전 세계 어디에서나 가장 큰 노래 가사 데이터베이스를 만들 수 있습니다 .

Genius에서 데이터를 크롤링하려는 이유는 무엇입니까?

Genius는 기고가, 음악가, 편집자까지 함께 모여 노래를 해체하는 음악 커뮤니티로 발전했습니다. 이러한 이유로 그들은 세계에서 가장 큰 음악 가사 라이브러리가 되었습니다. Genius는 또한 사용자 기반을 늘리기 위해 음악 스트리밍 회사와 파트너 관계를 맺었습니다.

Genius는 웹에서 음악 가사 및 기타 음악 산업 관련 데이터를 스크랩하고 크롤링할 수 있는 곳입니다. 방대한 가사 저장소를 제공할 뿐만 아니라 사용자 의견, 사용자 감정에도 액세스할 수 있기 때문입니다. Genius!에서 추출한 데이터를 기반으로 새로운 사용자 사이에서 현재 어떤 장르가 인기를 얻고 있는지 예측할 수 있다고 상상해 보세요.

Python을 사용하여 Genius의 노래 가사를 웹 스크래핑하는 방법은 무엇입니까?

웹 스크래핑과 관련하여 다양한 유형의 웹 스크래핑 프로젝트를 지원하는 언어는 거의 없습니다. 무엇보다도 Python은 배우기 가장 쉽고 다양한 유형의 프로젝트에 유용합니다. Python과 함께 일부 타사 Python 패키지와 텍스트 편집기도 필요합니다. 스크래핑하는 웹 사이트에 관계없이 설정이 동일하므로 이 페이지의 지침을 따를 수 있습니다. 완료하고 시스템을 설정했으면 시작할 준비가 된 것입니다.

코드는 어디에 있습니까?

그래서 노래 가사, 천재성, 기본 설정에 대해 많이 논의했습니다. 실행 방법과 코드 작동 방식을 보여주기 전에 파이썬을 사용하여 노래 가사 를 스크랩하는 코드를 살펴보겠습니다 .

[코드 언어 = "파이썬"]
#!/usr/bin/python
#- * -코딩: utf – 8 – * –

urllib.request 가져오기
urllib.parse 가져오기
urllib.error 가져오기
bs4 import BeautifulSoup에서
SSL 가져오기
json 가져오기
수입품
수입 OS
urllib.request에서 가져오기 요청, urlopen

# SSL 인증서 오류 무시

ctx = ssl.create_default_context()
ctx.check_hostname = 거짓
ctx.verify_mode = ssl.CERT_NONE

# 사용자 입력
url = input('천재노래 가사를 입력하세요 Url- ')

# 웹사이트가 Mozilla 브라우저를 사용하여 액세스하고 있다고 믿게 만들기
req = 요청(url, headers = { '사용자 에이전트' : 'Mozilla/5.0' })
웹 페이지 = urlopen(req).read()

# 데이터를 쉽게 추출할 수 있도록 html 페이지의 BeautifulSoup 객체를 생성합니다.

수프 = BeautifulSoup(웹페이지, 'html.parser')
html = 수프.prettify('utf-8')
노래_json = {}
song_json[“가사”] = [];
song_json[“댓글”] = [];

#곡제목추출
수프.findAll('title')의 제목:
song_json[“제목”] = title.text.strip()

# 노래 발매일 추출
수프.findAll('span', attrs = {'class': 'metadata_unit-info metadata_unit-info–text_only'})의 범위:
song_json["출시일"] = span.text.strip()

# 노래에 대한 코멘트 추출
div에 대한 수프.findAll('div', attrs = {'class': 'rich_text_formatting'}):
주석 = div.text.strip().split("n")
의견에 대한 의견:
의견이 있으면!=””:
song_json[“댓글”].append(댓글);

#노래 가사 추출
div의 수프.findAll('div', attrs = {'class': 'lyrics'}):
song_json["가사"].append(div.text.strip().split("n"));

#파일명으로 생성된 json을 title + .json으로 저장
open(song_json[“Title”] + '.json', 'w')을 outfile로 사용:
json.dump(song_json, outfile, 들여쓰기 = 4,sure_ascii = False)

# html 내용을 title + .html이라는 이름의 html 파일에 저장합니다.
파일로 open(song_json[“Title”] + '.html', 'wb') 사용:
file.write(html)

print('———-데이터 추출이 완료되었습니다. json 파일을 확인하세요.———-')
[/암호]

위에 주어진 코드를 실행하려면 확장자가 .py인 파일에 저장하기만 하면 됩니다. 따라서 예를 들어 이름이 songLyricsExtractor.py인 파일에 저장한 다음 터미널에서 다음 명령을 실행할 수 있습니다.

[코드 언어 = "파이썬"]
파이썬 노래 가사Extractor.py
[/암호]

실행하면 URL을 입력하라는 메시지가 표시됩니다. 이것은 Genius 웹사이트에 있는 모든 노래에 대한 링크일 수 있습니다. 링크 를 Lana Del Rey의 Looking for America에 사용할 수 있습니다. 코드가 어떻게 작동하는지 보여주기 위해 Genius에서 이 노래의 가사를 긁어모았습니다. 이에 대해서는 블로그 뒷부분에서 다룹니다.

코드 설명

코드를 실행하고 코드가 제공하는 내용을 이해하기 전에 코드 자체를 이해해 보겠습니다. 언제나처럼, 우리는 n HTML 페이지 를 통해 구문 분석을 만드는 라이브러리인 BS4(또는 Beautiful Soup)를 사용하고 있습니다 .

처음에는 웹 페이지를 가져와서 Beautiful Soup 개체로 변환하여 div, span, title 및 특정 속성이 있는 기타 태그를 선택할 수 있습니다. 우리는 이러한 기술을 사용하여 가사, 댓글, 웹페이지 제목 및 노래가 실제로 출시된 날짜를 크롤링합니다. 이 데이터를 스크랩하면 page+.json 확장자의 name-title과 함께 JSON 파일에 저장합니다. 또한 page+.html 확장자의 이름 제목으로 HTML 파일을 저장합니다. 이는 HTML 페이지를 분석하고 앞으로 더 많은 데이터 요소를 찾을 수 있도록 하기 위한 것입니다.

행동 강령의 예

코드를 실행하고 Genius에서 노래 링크를 제공하면 아래와 같은 JSON을 얻을 수 있습니다. 아래는 Lana Del Rey의 Looking for America에 대해 얻은 JSON입니다. JSON은 크기가 너무 크기 때문에 하나만 제시했지만 좋아하는 노래에 대해서도 실행할 수 있습니다.

[코드 언어 = "파이썬"]
{
"가사": [
[
“[1절]”,
“샌프란시스코로 여행을 갔다”,
"우리 친구들은 모두 우리가 지브릴 거라고 했어요",
"일을 하지 못해서 프레즈노로 떠났습니다",
“정말 경치 좋은 드라이브였어요”,
“공원에 있는 아이들을 보기 위해 차를 세웠다”,
“저희는 어두워진 후에만 걱정했습니다”,
"",
"[합창]",
“나는 여전히 나만의 미국 버전을 찾고 있다”,
"총 없는 나라, 깃발이 자유롭게 휘날리는 곳",
"하늘에는 폭탄이 없어, 너와 내가 부딪힐 때 불꽃만 있을 뿐",
"그냥 마음속으로 꾸었던 꿈일 뿐이야",
"그냥 마음속으로 꾸었던 꿈일 뿐이야",
"그냥 마음속으로 꾸었던 꿈일 뿐이야",
"",
“[2절]”,
"나는 비행기를 타고 뉴욕으로 돌아왔다",
"그 허드슨 강 라인을 놓쳤다",
“레이크 플래시드까지 기차를 탔어요”,
"그건 다른 장소와 시간, 어디에",
“저는 드라이브 인에 가서 블루스 음악을 듣곤 했습니다.”,
"하기 전에 두 번 생각하는 것들이 너무 많아, 아니",
"",
"[합창]",
“나는 여전히 나만의 미국 버전을 찾고 있다”,
"총 없는 나라, 깃발이 자유롭게 휘날리는 곳",
"하늘에는 폭탄이 없어, 너와 내가 부딪힐 때 불꽃만 있을 뿐",
"그냥 마음속으로 꾸었던 꿈일 뿐이야",
"그냥 마음속으로 꾸었던 꿈일 뿐이야",
"그냥 마음속으로 꾸었던 꿈일 뿐이야",
“그냥 마음속에 품은 꿈일 뿐이야”
]
],
"코멘트": [
[
""Looking for America"는 Lana가 2019년 8월 5일 미국 전역에서 발생한 총기난사 사건에 관해 쓴 노래입니다. LA로 돌아온 후 이 노래의 메시지는 Lana가 미국인을 위한 더 나은 상황을 꿈꾸는 데 의존하고 있으며, "Coachella – Woodstock in My Mind" 및 "When World Was at War We Kept Dancing"과 같은 트랙에서 이전에 노래한 적이 있습니다. 델 레이는 2019년 8월 9일 스트리밍 플랫폼을 통해 싱글로 음원을 발매했다.”,
"노래 제목은 Simon & Garfunkel의 "America"를 참조할 수 있습니다.",
"그들은 모두 미국을 찾으러 왔다",
"Del Rey는 친구이자 프로듀서인 Jack Antonoff와 함께 스튜디오에서 노래하는 비디오를 공유하기 위해 Instagram을 사용했습니다."
],
[
"Del Rey는 Instagram을 통해 다음을 추가하여 노래를 공유했습니다.",
“안녕하세요 여러분은 오늘 아침 일찍 몬테시토에서 형과 함께 돌아와서 잭 안토노프에게 마을로 와달라고 부탁했습니다. 왜냐하면 제가 쓰고 싶은 노래가 마음에 있었기 때문입니다. 이제 저는 제가 정치인이 아니라는 것을 알고 있고 의견을 가진 것에 대해 변명하려는 것이 아닙니다. 그러나 지난 며칠 동안 저에게 정말 영향을 미친 모든 총기 난사 사건과 연속적인 총격 사건에 비추어 볼 때 셀룰러 수준에서는 엔지니어 Laura가 20분 전에 찍은 이 비디오를 게시하고 싶었습니다. 나는 그것을 좋아하면 좋겠. 오늘 아침에 녹음한 후렴구에 사랑을 노래하고 있습니다. 나는 그것을 '미국을 찾아서'라고 부르겠다”고 말했다.
]
],
"Title": "Lana Del Rey – Looking For America 가사 | 천재 가사",
"출시일": "2019년 8월 9일"
}
[/암호]

이 솔루션은 얼마나 확장 가능합니까?

우리가 제공한 솔루션은 단일 노래에 대한 것이지만 Genius에서 노래 가사 페이지의 링크 목록을 만든 다음 Python을 사용하여 웹 스크래핑 노래 가사를 위해 목록에 있는 코드를 반복적으로 실행할 수 있습니다. 또한 노래 가사가 포함된 Genius 페이지에 대한 정규식 일치를 찾은 다음 Genius에서 한 번에 여러 페이지를 크롤링 하여 코드 자체에서 가사가 있는 페이지를 인식할 수 있습니다.

그러나 이러한 유형의 DIY 솔루션은 초보 애호가나 일회성 필요가 있는 사람에게 좋습니다. 귀하의 요구 사항이 더 상업적이고 다음 과 같은 기능이 필요한 웹 스크래핑 문제가 있는 경우:

  1. 특정 형식의 데이터 전달
  2. 정기적으로 데이터 새로 고침
  3. 유지 보수 및 인프라 비용 없음

그런 다음 PromptCloud와 같은 웹 스크래핑 서비스 제공업체와 함께 가야 합니다. PromptCloud 팀은 전 세계 비즈니스 팀에 엔터프라이즈급 웹 스크래핑 솔루션을 제공하여 비즈니스 워크플로 내에서 데이터를 사용하고 데이터 기반 의사 결정을 내릴 수 있도록 하는 것을 자랑스럽게 생각합니다.