Python을 사용하여 Youtube 데이터를 스크랩하는 방법

게시 됨: 2019-05-29
목차
YouTube에서 데이터를 스크랩하는 이유는 무엇입니까?
1. 가장 좋아하는 키워드 찾기
2. 해시태그 비교
3. 가장 인기 있는 채널 찾기
4. 채널 인기도 추적
5. 동영상의 좋아요, 싫어요 및 조회수 기록
코드를 시작해 보겠습니다.
YouTube 크롤러 코드는 다음과 같이 설명합니다.
Youtube에서 어떤 데이터 포인트를 스크랩할 수 있습니까?
제목
채널 이름
조회수
좋아요
싫어하는 것
구독 수
해시태그
결론
웹 데이터 추출에 도움이 필요하십니까?

유튜브는 동영상 공유 웹사이트에서 확실한 승자로 떠올랐고, 가치 가 1600억 달러 이상이라고 하지만 웹사이트를 통해 생계를 꾸리는 사람들의 수도 방대하다. 이러한 콘텐츠 제작자는 YouTube 파트너십 프로그램에 참여하고 콘텐츠로 수익을 창출하여 광고를 통해 많은 돈을 벌고 있습니다.

YouTube에서 데이터를 스크랩하는 이유는 무엇입니까?

YouTube 데이터는 다음과 같은 다양한 사용 사례에 유용할 수 있습니다.

1. 가장 좋아하는 키워드 찾기

특정 단어에 대해 YouTube에 표시되는 인기 동영상을 찾기 위해 검색을 실행한다고 가정해 보겠습니다. 이제 각 동영상의 좋아요, 싫어요, 조회수 및 제목을 스크랩하면 YouTube 제목에 삽입할 때 더 나은 수익으로 이어질 수 있는 키워드 목록을 만들 수 있습니다.

2. 해시태그 비교

특정 해시태그가 있는 동영상의 좋아요 및 조회수를 비교하면 동영상에 어떤 해시태그를 사용하여 동영상을 더 유명하게 만들지 또는 동영상 제목과 더 잘 어울리는 해시태그를 더 잘 이해할 수 있습니다.

3. 가장 인기 있는 채널 찾기  

YouTube에서 인기 동영상을 추출하면 발생하는 채널 이름의 빈도 그래프를 만드는 데 도움이 되므로 사람들이 즐겨 찾는 인기 채널을 찾을 수 있습니다. 이는 또한 YouTube 시청자 사이에서 가장 인기 있는 주제를 이해하는 데 도움이 됩니다.

4. 채널 인기도 추적

특정 유튜브 채널의 새로 업로드된 영상의 데이터를 추출하면 해당 채널의 인기도가 상승 또는 하락하고 있는지, 정체되어 있는지 알 수 있습니다.

5. 동영상의 좋아요, 싫어요 및 조회수 기록

x축에는 시간이 표시되고 y축에는 좋아요, 싫어요 또는 조회수가 표시되는 그래프를 만들 수 있습니다.

코드를 시작해 보겠습니다.

이와 같은 이전 "데이터 스크레이핑 방법" 문서에서 설치 및 초기화 프로세스를 이미 설명했으므로 이 단계를 완료할 준비가 되었기를 바랍니다 .

코드를 실행하려면 python 명령을 사용한 다음 메시지가 표시되면 YouTube 비디오 URL을 입력합니다.

유튜브 데이터 추출
그림: 쉘 스크립트에서 코드 실행.

아래에 제공된 코드를 파일에 복사하고 이름을 youtubeDataExtractor.py로 지정합니다(실제로 파일 이름이 '.py'로 끝나는 한 어떤 파일 이름이든 지정할 수 있음).

[코드 언어 = "파이썬"]

#!/usr/bin/python
# -*- 코딩: utf-8 -*-

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

# SSL 인증서 오류 무시

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

# 사용자 입력

url = input('유튜브 동영상 URL을 입력하세요- ')

# 웹사이트가 Mozilla 브라우저를 사용하여 액세스하고 있다고 믿게 만들기

요청 = 요청(url, headers={'사용자 에이전트': 'Mozilla/5.0'})
웹 페이지 = urlopen(req).read()

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

수프 = BeautifulSoup(웹페이지, 'html.parser')
html = 수프.prettify('utf-8')
video_details = {}
other_details = {}

수프.findAll('span',attrs={'class': 'watch-title'})의 범위:
video_details['TITLE'] = span.text.strip()

수프.findAll('script',attrs={'type': 'application/ld+json'})의 스크립트:
채널 설명 = json.loads(script.text.strip())
video_details['CHANNEL_NAME'] = 채널 설명['itemListElement'][0]['item']['name']

div에 대한 수프.findAll('div',attrs={'class': 'watch-view-count'}):
video_details['NUMBER_OF_VIEWS'] = div.text.strip()

수프.findAll('button',attrs={'title': '나는 이것을 좋아한다'})의 버튼:
video_details['LIKES'] = button.text.strip()

for 버튼의 수프.findAll('button',attrs={'title': '나는 이것을 싫어합니다'}):
video_details['DISLIKES'] = button.text.strip()

수프.findAll('span',attrs={'class': 'yt-subscription-button-subscriber-count-branded-horizontal yt-subscriber-count'})의 범위:
video_details['NUMBER_OF_SUBSCRIPTIONS'] = span.text.strip()

해시태그 = []
수프.findAll('span',attrs={'class': 'standalone-collection-badge-renderer-text'})의 범위:
in span.findAll('a',attrs={'class': 'yt-uix-sessionlink'}):
해시태그.append(a.text.strip())
video_details['HASH_TAGS'] = 해시태그

파일로 open('output_file.html', 'wb') 사용:
file.write(html)

open('data.json', 'w', encoding='utf8')을 outfile로 사용:
json.dump(video_details, outfile,sure_ascii=False,indent=4)

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

코드를 실행하면 현재 디렉터리에 data.json이라는 이름으로 생성된 JSON을 찾을 수 있습니다. 우리는 일부 인기 있는 뮤직 비디오에 대한 코드를 실행했으며 여기에 관련된 JSON이 있습니다.

1. Imagine Dragons의 Thunder

[코드 언어 = "파이썬"]

{
"TITLE": "Imagine Dragons - Thunder",
"CHANNEL_NAME": "ImagineDragonsVEVO",
"NUMBER_OF_VIEWS": "1,182,556,781 조회수",
"좋아요": "6,693,559",
"싫어요": "337,823",
"NUMBER_OF_SUBSCIPTIONS": "17M",
"HASH_TAGS": []
}

[/암호]

2. 드레이크 의 감정

[코드 언어 = "파이썬"]
{
"TITLE": "Drake - In My Feelings (가사, 오디오) "Kiki Do you love me"",
"CHANNEL_NAME": "특별한 통일",
"NUMBER_OF_VIEWS": "278,121,686 조회수",
"좋아요": "2,407,688",
"싫어요": "114,933",
"NUMBER_OF_SUBSCRIPTIONS": "614K",
"HASH_TAGS": [
“#내감성”,
"#드레이크",
"#투석기"
]
}
[/암호]

YouTube 크롤러 코드는 다음과 같이 설명합니다.

평소와 같이 먼저 웹 페이지에서 HTML 코드를 긁어내고 로컬 디렉토리의 파일에 저장하여 이를 분석하고 쉽게 추출할 수 있고 가치가 있는 데이터 요소를 찾을 수 있습니다. HTML 페이지의 데이터 포인트에 대한 대부분의 연구는 특정 키워드나 값을 검색하고 발생 위치를 찾아 수동으로 수행해야 합니다.

HTML 코드의 특정 위치에서 데이터를 추출하기 위해 BeautifulSoup(BS4)를 사용했습니다.

  1. 'watch-title' 클래스를 갖는 span 유형 요소는 비디오의 제목을 찾을 수 있는 곳입니다.
  2. 'application/ld+json' 유형의 스크립트 요소에는 채널 이름이 포함됩니다.
  3. watch-view-count 클래스가 있는 div 요소는 특정 YouTube 동영상의 조회수를 얻는 데 도움이 됩니다.
  4. 제목이 'I like this'인 버튼 요소는 해당 특정 비디오의 좋아요 수를 나타냅니다.
  5. 위의 점과 유사하게 '싫어요'라는 제목의 버튼 요소는 특정 비디오에 대한 싫어요 횟수를 카운트합니다.
  6. 'yt-subscription-button-subscriber-count-branded-horizontal yt-subscriber-count' 클래스가 있는 span 요소는 특정 동영상을 업로드한 채널의 구독자 수를 추출할 수 있는 요소입니다.
  7. 주어진 비디오와 관련된 해시태그를 찾는 것은 다른 데이터 포인트보다 약간 더 복잡합니다. 먼저 'standalone-collection-badge-renderer-text' 클래스가 있는 모든 범위를 추출해야 하며, 거기에서 'yt-uix-sessionlink' 클래스가 있는 모든 a-태그를 추출해야 합니다. 모든 a-태그의 텍스트를 배열로 추출하여 해시태그 목록을 만들 수 있습니다. 이 배열은 'HASH_TAGS'라는 특정 키 아래 결과 json에 추가되어 최종 결과 json에서 구조화된 형식의 정보를 얻을 수 있습니다.

Youtube에서 어떤 데이터 포인트를 스크랩할 수 있습니까?

위에 제공된 코드를 사용하여 URL을 소유하고 있는 한 모든 YouTube 동영상에서 특정 데이터 포인트를 스크랩할 수 있습니다. YouTube 동영상 페이지에서 필수 입력란이 아니기 때문에 특정 동영상에서는 해시태그 입력란만 누락될 수 있습니다. 스크랩할 수 있는 데이터 포인트는 다음과 같습니다.

제목

가장 중요한 데이터 포인트는 맨 처음에 추출한 데이터 포인트입니다. 비디오의 제목에는 많은 정보가 포함되어 있으며 가장 중요합니다. 이 정보가 없으면 다른 모든 데이터 요소는 의미가 없습니다.

채널 이름

제목 바로 뒤에 채널 이름은 제목을 작성자, 즉 콘텐츠를 만든 사람과 연결하는 데 중요합니다. YouTube에서 동영상은 제작자가 아닌 채널 이름으로 연결됩니다. 많은 경우 한 채널의 동영상에서 한 명 이상의 사람이 작업하기 때문입니다.

조회수

동영상의 도달범위를 이해하는 가장 간단한 측정항목은 동영상의 조회수를 찾는 것입니다. 이것은 또한 YouTube 동영상과 관련된 가장 중요한 측정항목이며 여러 면에서 동영상 제작자가 벌어들일 수익을 결정합니다.

좋아요

YouTube 동영상의 좋아요 수는 단순히 동영상 아래의 좋아요 버튼을 실제로 클릭할 만큼 동영상을 좋아한 시청자의 비율입니다.

싫어하는 것

위의 데이터 요소와 유사하게 싫어요 횟수는 동영상의 싫어요 버튼 클릭 수를 결정합니다.

구독 수

좋아요, 싫어요 및 조회수가 단일 YouTube 동영상의 인기도를 나타내는 반면 구독 수는 YouTube 채널의 인기도에 대한 자세한 정보를 제공합니다. YouTube 채널의 경우 다른 측정항목이 없습니다. 구독 수는 유일한 단일 데이터 포인트이며 높을수록 해당 YouTube 채널의 인기도가 높아집니다.

해시태그

해시태그는 다양한 매체에서 콘텐츠를 검색할 수 있도록 하는 인기 있는 방법이 되었습니다. Facebook 게시물이든 Instagram 사진이든 오늘날 사람들은 다양한 유형의 콘텐츠를 함께 연결할 수 있도록 다양한 유형의 온라인 콘텐츠와 함께 해시태그를 사용하고 있습니다. 그것이 오늘날 '트렌드 해시태그'가 화제가 된 이유다.

결론

주어진 코드는 YouTube 비디오 페이지에서 일부 특정 데이터 포인트만 추출할 수 있지만 다른 YouTube 페이지에서 HTML 페이지를 탐색하면 유사한 HTML 요소에서 발생하는 더 많은 데이터 포인트를 찾는 데 도움이 될 수 있습니다. 웹 사이트 자체가 계속 변경되기 때문에 웹 스크래핑에는 엄격하고 빠른 규칙이 없습니다. 따라서 어떤 데이터를 긁어낼 것인지, 어떻게 긁어낼 것인지를 배우는 것은 데이터 형식이 다른 여러 웹 페이지를 긁어봄으로써 경험을 통해서만 얻을 수 있는 것입니다.


웹 데이터 추출에 도움이 필요하십니까?

당사의 웹 스크래핑 서비스를 통해 비즈니스 애플리케이션용 웹 사이트에서 깨끗하고 바로 사용할 수 있는 데이터를 얻으십시오.

앗! 양식을 찾을 수 없습니다.

면책 조항: 이 튜토리얼에서 제공하는 코드는 학습용입니다. 우리는 그것이 어떻게 사용되는지에 대해 책임을 지지 않으며 소스 코드의 해로운 사용에 대해 어떠한 책임도 지지 않습니다.