Jak zeskrobać dane z YouTube za pomocą Pythona?

Opublikowany: 2019-05-29
Spis treści pokaż
Po co zbierać dane z YouTube?
1. Znajdź najbardziej lubiane słowa kluczowe
2. Porównaj hashtagi
3. Znajdź najpopularniejsze kanały
4. Śledzenie popularności kanałów
5. Nagrywanie polubień, niechęci i wyświetleń filmów
Zacznijmy od kodu:
Wyjaśnienie kodu robota YouTube:
Jakie punkty danych możesz pobrać z YouTube?
TYTUŁ
NAZWA KANAŁU
LICZBA WIDOKÓW
LUBI
NIELUBIE
LICZBA SUBSKRYPCJI
HASHTAGI
Wniosek
Potrzebujesz pomocy przy wyodrębnianiu danych internetowych?

YouTube stał się wyraźnym zwycięzcą, jeśli chodzi o witryny do udostępniania wideo, i chociaż mówi się, że jest wyceniany na ponad 160 miliardów dolarów, liczba osób, które zarabiają na życie dzięki tej witrynie, jest również ogromna. Ci twórcy treści dołączają do programu partnerskiego YouTube i zarabiając na swoich treściach, zarabiają mnóstwo pieniędzy dzięki reklamom.

Po co zbierać dane z YouTube?

Dane z YouTube mogą być przydatne w wielu zastosowaniach, takich jak:

1. Znajdź najbardziej lubiane słowa kluczowe

Załóżmy, że prowadzisz wyszukiwanie, aby znaleźć najpopularniejsze filmy wyświetlane w YouTube dla określonych słów. Teraz, jeśli zeskrobujesz upodobania, antypatie, widoki i tytuły każdego z tych filmów, będziesz mógł stworzyć listę słów kluczowych, które po wstawieniu do tytułów YouTube mogą prowadzić do lepszych przychodów.

2. Porównaj hashtagi

Porównując polubienia i wyświetlenia filmów z określonymi hashtagami, możesz uzyskać lepszy pomysł, które hashtagi użyć w swoim filmie, aby uczynić go bardziej popularnym, lub zrozumieć, które hashtagi pasują lepiej do tytułu filmu.

3. Znajdź najpopularniejsze kanały  

Wyodrębnienie najlepszych filmów z YouTube może pomóc w stworzeniu wykresu częstotliwości występowania nazw kanałów, co pozwoli Ci znaleźć najlepsze kanały, które podobają się ludziom. To z kolei pomogłoby Ci również zrozumieć, które tematy są najpopularniejsze wśród widzów YouTube.

4. Śledzenie popularności kanałów

Wyodrębniając dane z nowo przesłanych filmów z określonego kanału YouTube, będziesz w stanie sprawdzić, czy popularność kanału rośnie, maleje, czy też jest w stagnacji.

5. Nagrywanie polubień, niechęci i wyświetleń filmów

Możesz utworzyć wykres z czasem na osi X i polubieniami, niechęciami lub wyświetleniami na osi y, zbierając dane z tych filmów w regularnych odstępach czasu.

Zacznijmy od kodu:

Ponieważ proces instalacji i inicjalizacji został już wyjaśniony w poprzednich artykułach „Jak pobierać dane z”, takich jak ten , mamy nadzieję, że te kroki są już gotowe.

Aby uruchomić kod, użyj polecenia Pythona, a następnie po wyświetleniu monitu wprowadź adres URL filmu YouTube.

wyodrębnij dane z YouTube
Rys: Uruchamianie kodu ze skryptu powłoki.

Skopiuj poniższy kod do pliku i nazwij go jako youtubeDataExtractor.py (chociaż możesz nadać mu dowolną nazwę pliku, o ile kończy się na „.py”).

[język kodu=”python”]

#!/usr/bin/python
# -*- kodowanie: utf-8 -*-

importuj urllib.request
importuj urllib.parse
importuj urllib.error
z bs4 importuj BeautifulSoup
importuj ssl
importuj json
importuj ast
importuj json
importuj system
z urllib.request import Żądanie, urlopen

# Do ignorowania błędów certyfikatu SSL

ctx = ssl.utwórz_domyślny_kontekst()
ctx.check_hostname = Fałsz
ctx.verify_mode = ssl.CERT_Brak

# Wejście od użytkownika

url = input('Wprowadź adres URL filmu wideo YouTube-')

# Sprawienie, by strona uwierzyła, że ​​uzyskujesz do niej dostęp za pomocą przeglądarki Mozilla

req = Request(url, headers={'User-Agent': 'Mozilla/5.0'})
strona internetowa = urlopen(req).read()

# Tworzenie obiektu BeautifulSoup strony html w celu łatwego wydobycia danych.

zupa = PięknaZupa(strona internetowa, 'html.parser')
html = zupa.prettify('utf-8')
video_details = {}
inne_szczegóły = {}

for span w soup.findAll('span',attrs={'class': 'watch-title'}):
video_details['TYTUŁ'] = span.text.strip()

dla skryptu w soup.findAll('script',attrs={'type': 'application/ld+json'}):
channelDescciption = json.loads(script.text.strip())
video_details['CHANNEL_NAME'] = opis kanału['itemListElement'][0]['item']['name']

dla div w soup.findAll('div',attrs={'class': 'watch-view-count'}):
video_details['NUMBER_OF_VIEWS'] = div.text.strip()

for button w soup.findAll('button',attrs={'title': 'Lubię to'}):
video_details['LUBIE'] = button.text.strip()

for button in soup.findAll('button',attrs={'title': 'Nie lubię tego'}):
video_details['NIELUBIĄ'] = button.text.strip()

for span in soup.findAll('span',attrs={'class': 'yt-subscription-button-subscriber-count-branded-horizontal yt-subscriber-count'}):
video_details['NUMBER_OF_SUBSCRIPTIONS'] = span.text.strip()

hashtagi = []
for span w soup.findAll('span',attrs={'class': 'standalone-collection-badge-renderer-text'}):
dla in span.findAll('a',attrs={'class': 'yt-uix-sessionlink'}):
hashtagi.append(a.tekst.strip())
video_details['HASH_TAGS'] = hashtagi

z open('output_file.html', 'wb') jako plik:
file.write(html)

z open('data.json', 'w', encoding='utf8′) jako plik wyjściowy:
json.dump(video_details, outfile, secure_ascii=False,indent=4)

print ('———-Rozpakowywanie danych zakończone. Sprawdź plik json.———-')
[/kod]

Po uruchomieniu kodu znajdziesz utworzony w bieżącym katalogu plik JSON o nazwie data.json. Uruchomiliśmy kod dla niektórych popularnych teledysków, a oto powiązane z nimi pliki JSON-

1. Grzmot przez Imagine Dragons –

[język kodu=”python”]

{
„TYTUŁ”: „Imagine Dragons – Thunder”,
„CHANNEL_NAME”: „ImagineDragonsVEVO”,
„NUMBER_OF_VIEWS”: „1 182 556 781 wyświetleń”,
„LUBIE”: „6 693 559”,
„NIE LUBI”: „337.823”,
„NUMBER_OF_SUBSCRIPTIONS”: „17M”,
„HASH_TAGS”: []
}

[/kod]

2. W twoich uczuciach Drake

[język kodu=”python”]
{
„TITLE”: „Drake – In My Feelings (teksty, audio) „Kiki Czy mnie kochasz””,
„CHANNEL_NAME”: „Specjalna jedność”,
„NUMBER_OF_VIEWS”: „278 121 686 wyświetleń”,
„LUBIE”: „2407,688”,
„NIE LUBI”: „114.933”,
„NUMBER_OF_SUBSCRIPTIONS”: „614K”,
„HASH_TAGS”: [
„#InMyFeelings”,
"#Kaczor",
"#Skorpion"
]
}
[/kod]

Wyjaśnienie kodu robota YouTube:

Jak zwykle, najpierw zeskrobujemy kod HTML ze strony internetowej i zapisujemy go w pliku w naszym lokalnym katalogu, abyśmy mogli go przeanalizować i znaleźć punkty danych, które można łatwo wyodrębnić i które również byłyby cenne. Większość badań punktów danych na stronie HTML należy przeprowadzić ręcznie, wyszukując określone słowa kluczowe lub wartości i znajdując, gdzie one występują.

Użyliśmy BeautifulSoup (BS4) do wydobycia danych z określonych miejsc w kodzie HTML-

  1. Element typu span mający klasę „watch-title” to miejsce, w którym można znaleźć tytuł filmu.
  2. Element script o typie „application/ld+json” zawiera nazwę kanału.
  3. Element div z klasą watch-view-count pomoże Ci uzyskać liczbę wyświetleń tego konkretnego filmu w YouTube.
  4. Element przycisku o tytule „Podoba mi się” zawiera liczbę polubień tego konkretnego filmu.
  5. Podobnie jak w powyższym punkcie, element przycisku o tytule „Nie podoba mi się to” zawiera liczbę negatywnych opinii w konkretnym filmie.
  6. Element span z klasą „yt-subscription-button-subscriber count-branded-horizontal yt-subscriber-count” to taki, z którego można wyodrębnić liczbę subskrybentów kanału, który przesłał ten konkretny film.
  7. Znalezienie hashtagów powiązanych z danym filmem jest nieco bardziej skomplikowane niż inne punkty danych. Najpierw musisz wyodrębnić wszystkie spany za pomocą klasy „standalone-collection-badge-renderer-text”, a stamtąd musisz wyodrębnić wszystkie tagi a za pomocą klasy „yt-uix-sessionlink”. Wyodrębniając tekst ze wszystkich tagów a do tablicy, będziesz mógł utworzyć listę hashtagów. Ta tablica może zostać dodana do wynikowego json pod określonym kluczem o nazwie „HASH_TAGS”, aby uzyskać informacje w ustrukturyzowanym formacie w końcowym wyniku json.

Jakie punkty danych możesz pobrać z YouTube?

Korzystając z kodu podanego powyżej, możesz zeskrobać określone punkty danych z dowolnego filmu na YouTube, o ile posiadasz ich adres URL. W niektórych filmach może brakować tylko pola hashtags, ponieważ nie jest ono obowiązkowe na stronach filmów w YouTube. Punkty danych, które można zeskrobać, są następujące:

TYTUŁ

Najważniejszym punktem danych jest ten, który wyodrębniamy na samym początku. Tytuł filmu zawiera wiele informacji i ma ogromne znaczenie, bez których wszystkie inne punkty danych nie miałyby żadnego sensu.

NAZWA KANAŁU

Nazwa kanału tuż po tytule jest ważna, aby powiązać tytuł z twórcą, czyli z autorem treści. W YouTube filmy są kojarzone według nazw kanałów, a nie twórców, ponieważ w wielu przypadkach nad filmami z jednego kanału pracuje więcej niż jedna osoba.

LICZBA WIDOKÓW

Najprostszym wskaźnikiem pozwalającym zrozumieć zasięg filmu jest określenie liczby jego wyświetleń. Jest to również najważniejszy wskaźnik związany z filmem w YouTube i pod wieloma względami określa, jakie przychody zarobi twórca filmu.

LUBI

Polubienia filmu na YouTube to po prostu procent widzów, który polubił ten film na tyle, aby faktycznie kliknąć przycisk kciuka w górę pod filmem.

NIELUBIE

Podobnie jak w przypadku powyższego punktu danych, liczba negatywnych opinii określa liczbę kliknięć przycisku niechęci dla filmu.

LICZBA SUBSKRYPCJI

Podczas gdy sympatie, antypatie i poglądy malują obraz popularności pojedynczego filmu na YouTube, liczba subskrypcji daje lepsze wyobrażenie o popularności kanału YouTube. W przypadku kanałów YouTube nie mamy innych danych. Liczba subskrypcji jest jedynym pojedynczym punktem danych i im jest wyższa, tym bardziej popularny jest dany kanał YouTube.

HASHTAGI

Hashtagi stały się popularnym sposobem na umożliwienie wyszukiwania treści w różnych mediach. Czy to posty na Facebooku, czy zdjęcia na Instagramie, ludzie używają dziś hashtagów z różnymi rodzajami treści online, dzięki czemu różne rodzaje treści mogą być ze sobą powiązane. To jest powód, dla którego „trenujące hashtagi” są dzisiaj czymś ważnym.

Wniosek

Chociaż podany kod może wyodrębnić tylko niektóre określone punkty danych ze strony wideo YouTube, przeglądanie stron HTML z różnych stron YouTube może pomóc w znalezieniu większej liczby punktów danych, które występują pod podobnymi elementami HTML. Web scraping nie ma twardych i szybkich reguł, ponieważ same strony internetowe ciągle się zmieniają. Dlatego nauczenie się, jakie dane należy zeskrobać i jak zeskrobać, jest czymś, co można zebrać tylko na podstawie doświadczenia, zeskrobując różne strony internetowe o różnych formatach danych.


Potrzebujesz pomocy przy wyodrębnianiu danych internetowych?

Uzyskaj czyste i gotowe do użycia dane ze stron internetowych dla aplikacji biznesowych dzięki naszym usługom web scrapingu.

Ups! Nie mogliśmy znaleźć Twojego formularza.

Zastrzeżenie: Kod dostarczony w tym samouczku służy wyłącznie do celów edukacyjnych. Nie ponosimy odpowiedzialności za sposób jego wykorzystania i nie ponosimy odpowiedzialności za jakiekolwiek szkodliwe wykorzystanie kodu źródłowego.