python — Парсер видео с YouTube
Есть такая задача: сделать скрипт на Python, который после выхода каждого ролика на канале, делал определенные действия(что угодно), как это лучше всего реализовать? Лично я пробовал использовать beautyful soup
, но так и не разобрался, как правильно спарсить url нового видео, и принципе получить список видео P.S. если можно, приложите некоторый код пожалуйста
- python
- python-3.x
- youtube
Рассмотри некоторый канал. Каждое видео это отдельный ytd-grid-video-renderer c классом «style-scope ytd-grid-renderer»
Название видео содержится в атрибуте title тега с id = «video-title»
В href содержится ссылка без домена (/watch?v=HQxZaeGxwQs)
Т.к. содержание страницы подгружается «динамический», через javascript, а вы новичек, я бы порекомендовал использовать связку Selenium + geckodriver + BeautifulSoup. Selenium зайдёт на страницу, выполнить javascript-ы и выгрузит полученый html — код в BS.
from selenium import webdriver from bs4 import BeautifulSoup as BS URL = "" #Ваш урл driver = webdriver.Chrome() driver.get(URL) time.sleep(10) #Можно ждать до загрузки страницы, но проще подождать 10 секунд, их хватит с запасом html = driver.page_source
Теперь в переменной html код нашей страницы. Найдём в нем все видеоролики и названия к ним:
soup = BS(html, "html.parser") videos = soup.find_all("ytd-grid-video-renderer",{"class":"style-scope ytd-grid-renderer"}) for video in videos: a = video.find("a",{"id":"video-title"}) name = link.get_text() link = "https://www.youtube.com/" + a.get("href") print(name, link)
Этот код выведет поочередно ссылки на все видео и их названия. Я прибавил к ссылке https://www.youtube.com/ , так как на youtube ссылке к роликам указаны без домена.
4Зарегистрируйтесь или войдите
Регистрация через Google Регистрация через Facebook Регистрация через почтуОтправить без регистрации
ПочтаНеобходима, но никому не показывается
Отправить без регистрации
ПочтаНеобходима, но никому не показывается
Нажимая на кнопку «Отправить ответ», вы соглашаетесь с нашими пользовательским соглашением, политикой конфиденциальности и политикой о куки
Парсинг видео с канала Youtube (Python, BeautifulSoup, requests)
Вопрос задан
Изменён 3 года назад
Просмотрен 5k раза
Есть вот такой код:
from bs4 import BeautifulSoup import requests ycid = input('Введите код-идентификатор канала: ') #получение идентификатор канала url = f'https://www. youtube.com/channel/{ycid}' #создание ссылки на канал HEADERS = {'User-Agent': 'Mozilla/5.0 (Windows NT 7.0; Win32; x32) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36'} print(f'Парсим с канала: {url}') html = requests.get(url, headers = HEADERS ) html = html.text soup = BeautifulSoup(html, 'lxml') div_tags = soup.find_all('div', {'class': 'style-scope ytd-grid-video-renderer', 'id': 'dismissable'}) print(div_tags) a_tags = [div.find('a') for div in div_tags] print(a_tags) url_img = [a['href'] for a in a_tags] print(url_img)
Код должен парсить первое видео с указанного канала, но он выдаёт пустые списки.
Итог:
Введите код-индитификатор канала: UCviSYAcwdnDX1UoRzAHYgNg Парсим с канала: https://www.youtube.com/channel/UCviSYAcwdnDX1UoRzAHYgNg [] [] []
Как можно исправить код?
- python
- python-3.x
- requests
- beautiful-soup
Рассмотри некоторый канал. Просмотрим код страницы при помощи Ctr + U
Если мы выполним поиск по названию какого то видео, то мы заметим что он присутствует в коде, но не в виде HTML. Дело в том что BS видит код, таким как он был до выполнения всех скриптов и.т.п., что может отличаться от html кода в средстве отладки вашего браузера. Вы можете получать r.content а далее про помощи json парсера выуживать информацию. В принципе ссылки на видео получить и без использования этого метода:
Так как вы новичок то я бы порекомендовал использовать связку Selenium + geckodriver + BeautifulSoup. Selenium зайдёт на страницу, выполнить javascript-ы и выгрузит полученый html — код в BS. Каждое видео это отдельный ytd-grid-video-renderer c классом «style-scope ytd-grid-renderer»
Название видео содержится в атрибуте title тега с id = «video-title»
В href содержится ссылка без домена (/watch?v=HQxZaeGxwQs)
Пример кода:
from selenium import webdriver from bs4 import BeautifulSoup as BS URL = "" #Ваш урл driver = webdriver.Chrome() driver.get(URL) time.sleep(10) #Можно ждать до загрузки страницы, но проще подождать 10 секунд, их хватит с запасом html = driver. page_source
Теперь в переменной html код нашей страницы. Найдём в нем все видеоролики и названия к ним:
soup = BS(html, "html.parser") videos = soup.find_all("ytd-grid-video-renderer",{"class":"style-scope ytd-grid-renderer"}) for video in videos: a = video.find("a",{"id":"video-title"}) name = link.get_text() link = "https://www.youtube.com/" + a.get("href") print(name, link)
Аналогичный вопрос: тыk
Зарегистрируйтесь или войдите
Регистрация через Google Регистрация через Facebook Регистрация через почтуОтправить без регистрации
ПочтаНеобходима, но никому не показывается
Отправить без регистрации
ПочтаНеобходима, но никому не показывается
Нажимая на кнопку «Отправить ответ», вы соглашаетесь с нашими пользовательским соглашением, политикой конфиденциальности и политикой о куки
python — Парсинг новых видео с YouTube с помощью BeautifulSoup
Вы можете парсить YouTube с помощью:
- , используя
запросов — HTML
,playwright
илибиблиотеки selenium
. - с использованием регулярного выражения.
- с использованием API результатов поисковой системы YouTube от SerpApi.
Код (это действительно просто, чтобы дать представление)
из request_html import HTMLSession сеанс = HTMLSession() url = "https://www.youtube.com/results?search_query=programming&sp=CAISBAgBEAE%253D" ответ = session.get(url) response.html.render (sleep = 1, keep_page = True, scrolldown = 2) для ссылок в response.html.find('a#video-title'): ссылка = следующая (iter (links.absolute_links)) распечатать (ссылка)
Вывод:
https://www.youtube.com/watch?v=OUnxJk3Bphk https://www.youtube.com/watch?v=em0Is0nyaXA https://www.youtube.com/watch?v=N5JVTUAGmAM https://www. youtube.com/watch?v=uuMS1FYLgWQ https://www.youtube.com/watch?v=c5MtH-xDspg https://www.youtube.com/watch?v=5Xktqz6VUTU https://www.youtube.com/watch?v=Wbo6j_iq2XY https://www.youtube.com/watch?v=j28PjOy_uk8 https://www.youtube.com/watch?v=vH9_Eo7VW3c
Использование регулярного выражения
без безголового браузера.
Вам нужно добраться до элемента var ytInitialData
, а затем "commandMetadata"
, где вы найдете URL для видео {"url":"/watch?v=Ae2TRkpjRCc",....
Вот отправная точка, где он захватывает все внутри var ytInitialData
на regex101.
Кроме того, вы можете использовать API результатов поисковой системы YouTube от SerpApi. Это платный API с бесплатным планом. Загляните на детскую площадку.
Код для интеграции:
из serpapi import GoogleSearch параметры = { "движок": "ютуб", "search_query": "программирование", "sp": "CAISBAgBEAE%253D", "api_key": "ваш_секрет_api_key" } поиск = Поиск в Google (параметры) результаты = search.get_dict() для ссылки в результатах['video_results']: print(f"Заголовок: {ссылка['название']}\nСсылка: {ссылка['ссылка']}\n")
Вывод:
Заголовок: КЛАСС VIII ОСНОВНЫЕ ТЭГИ HTML И ПРОГРАММИРОВАНИЕ 15 4 101` Ссылка: https://www.youtube.com/watch?v=KIPp63tXKpU Название: Цикл for в программировании на C #bssdlectureclasses Ссылка: https://www.youtube.com/watch?v=nfRN0x9VvQc Название: [C#] Программирование NatsukiBot Ссылка: https://www.youtube.com/watch?v=chnigx-ezwg Название: CS201 Краткая лекция - 03 | Краткая лекция ВУ | Введение в программирование на (урду/хинди) Ссылка: https://www.youtube.com/watch?v=qoxXJchd7N4 Название: Программирование на языке C. Оператор While Ссылка: https://www. youtube.com/watch?v=cl0OpNCdF5I Название: Введение в html и основы программирования Ссылка: https://www.youtube.com/watch?v=A4We3NGqxuA Название: Использование функций Printf и Scanf | Часть 7 | Программирование на С | ПадхоЧало Ссылка: https://www.youtube.com/watch?v=578xS-Ugc2c Название: Начался курс C++ | Компьютерное программирование | Аашу | Ссылка: https://www.youtube.com/watch?v=SjFgTK2HqbE Название: Mitsubishi Outlander 2008 Prox/Twist Совет по программированию транспондерного ключа Ссылка: https://www.youtube.com/watch?v=HlSJcBwxKFQ Название: Компьютерное программирование 1 - Введение в курс Ссылка: https://www.youtube.com/watch?v=xdmPbhTT01g Название: Программирование, структуры данных и алгоритмы в Python Ссылка: https://www.youtube.com/watch?v=0fUddu9cdAU
P.S. Я написал две записи в блоге о том, как выполнять парсинг поиска YouTube с помощью Python (часть 1) и парсинг поиска YouTube с помощью Python (часть 2), которые более подробно освещают это с помощью визуального представления.
Отказ от ответственности, я работаю в SerpApi.
Очистка комментариев YouTube для анализа настроений
Вы ищете очиститель комментариев YouTube для анализа настроений? Если да, то вы пришли в нужное место. Эта статья поможет вам очистить комментарии YouTube, используя два самых простых метода.
Содержание
- Законно ли копировать комментарии YouTube
- Бесплатный парсер комментариев YouTube без кода
- Очистка комментариев YouTube с помощью Python
В настоящее время у YouTube более 2 миллиардов активных пользователей в месяц. Видео на YouTube пестрят комментариями тысяч пользователей. Очистка этих комментариев YouTube может помочь вам сделать много интересных и интересных вещей. Информация, полученная из комментариев YouTube, может помочь вам в построении моделей машинного обучения, проведении анализа настроений пользователей, создании больших наборов данных и выполнении анализа данных.
Итак, независимо от того, являетесь ли вы исследователем, студентом или инженером по обработке данных, следующий контент может помочь вам получить комментарии YouTube для дальнейшего анализа. Давайте рассмотрим различные методы извлечения данных комментариев YouTube с кодированием и без него.
Законно ли копировать комментарии YouTube
Если вам интересно, законно ли копировать комментарии YouTube, краткий ответ: ДА, легально .
YouTube содержит тысячи данных, пригодных для исследований, маркетинга и рекламы. Большинство публичных комментариев к видео на YouTube дают хорошее представление о том, что пользователи думают о размещенном видео.
Поскольку данные комментариев YouTube общедоступны, вы можете легко скопировать и вставить их в электронную таблицу или Excel и создать набор данных. Используя этот набор данных, вы можете выполнить анализ настроений или применить к нему свои алгоритмы ИИ.
Но ручное копирование данных на лист Excel занимает много времени и не является подходящим решением, если к видео тысячи комментариев. Вот почему вам нужен веб-скрейпинг.
Веб-скрапинг — это способ чтения данных веб-сайта с помощью автоматизированного инструмента или скрипта программирования. После того как данные прочитаны, инструмент помогает сохранять и хранить общедоступные большие данные в упорядоченном формате, который можно использовать для исследований, т. е. для анализа настроений.
Таким образом, парсинг комментариев YouTube является законным, поскольку они предназначены для публики. Вы можете не только комментировать YouTube, но и любые общедоступные данные в Интернете, и это законно.
Бесплатный парсер комментариев YouTube Запрошено без кодирования
Предыдущий раздел был важен, чтобы помочь вам понять, что парсинг комментариев YouTube является законным. Здесь мы поговорим о том, как легко получить комментарии с помощью лучшего парсера комментариев YouTube, Октопарс . Это очень надежный инструмент, не требующий навыков программирования. Вы можете легко загрузить все комментарии YouTube в нужный формат, например Excel. Инструмент предоставляет отличный пользовательский интерфейс, который прост в использовании для любого новичка.
Основные возможности Octoparse
- Удобный для пользователя, поскольку не требует кода и требует трехэтапного извлечения данных.
- Поддерживает все типы веб-сайтов.
- Позволяет экспортировать очищенные данные в различные форматы.
- Облачный сервис Octoparse автоматизирует ваш повторяющийся сбор данных. Функции ротации IP-адресов
- помогают избежать блокировки при очистке данных.
Действия по очистке комментариев YouTube с помощью Octoparse Шаг 1. Вставьте URL-адрес YouTube в Octoparse бесплатный аккаунт. Скопируйте и вставьте нужный URL-адрес видео YouTube в строку поиска и нажмите кнопку «Пуск». Octoparse автоматически загрузит страницу.
Вы также можете искать комментарии YouTube в строке поиска и находить готовый шаблон. Вы можете предварительно просмотреть образец данных и использовать его для парсинга всего за несколько кликов.
Шаг 2. Настройте рабочий процесс очистки комментариев YouTube
Octoparse автоматически создаст для вас сканер комментариев YouTube. Вы можете вносить изменения с помощью советов, которые он дает, чтобы проверить все данные, которые вы хотите, можно найти в таблице предварительного просмотра. Вы можете быстро удалить любые поля, которые не хотите очищать или переименовывать.
Шаг 3. Соберите комментарии с YouTube и загрузите
Нажмите кнопку «Сохранить» в правом верхнем углу, чтобы сохранить задачу, созданную в Octoparse. После этого нажмите кнопку «Выполнить» и подождите, пока Octoparse завершит свою работу. Вы можете скачать скопированные комментарии YouTube в желаемом формате.
Видеоруководство по извлечению информации о видео с YouTube с помощью Octoparse0091
Скрипты Python — еще один эффективный способ очистки комментариев YouTube. Но этот метод сложен, если у вас нет опыта программирования.
Примечание: Убедитесь, что на вашем компьютере настроена среда Python, прежде чем использовать этот метод.
Как очистить комментарии YouTube с помощью языка программирования Python
Шаг 1: Установите Google Chrome на свой компьютер.
Шаг 2: После этого установите ChromeDriver, нажав здесь.
Шаг 3: В свой код Python импортируйте следующие библиотеки, необходимые для очистки данных комментариев YouTube.
время импорта
из selenium.webdriver import Chrome
из selenium.webdriver.common.by import By
из selenium. webdriver.common.keys Импорт ключей
из selenium.webdriver.support.ui импорт WebDriverWait
из selenium.webdriver.support импортировать ожидаемые_условия как EC
Эти библиотеки необходимы для сканирования динамически загружаемых комментариев YouTube. Не беспокойтесь, если вы не знаете точно назначение каждой библиотеки, используемой в процессе.
Шаг 4: Добавьте приведенный ниже код, чтобы очистить комментарии к видео с YouTube.
data= []
youtube_video_url= «https://www.youtube.com/watch?v=kuhhT_cBtFU&t=2s»
с Chrome(executable_path=r’C:\Program Files\chromedriver.exe’) в качестве драйвера:
wait = WebDriverWait(driver,15)
driver.get(youtube_video_url)
для элемента в диапазоне (200):
wait.until(EC.visibility_of_element_located((By. TAG_NAME, «body»))).send_keys(Keys.END) 9 0198
time.sleep (15)
для комментария в ожидании.
Здесь вы создали Цикл Python, который будет перебирать комментарии к вашему видео на YouTube и во время каждой итерации добавлять очищенные комментарии в поле данных. Кроме того, измените ссылку на видео YouTube на желаемое видео из переменной youtube_video_url .
Шаг 5: Визуализируйте скопированные комментарии YouTube с помощью библиотеки Python Pandas. Вам нужно добавить следующие строки кода в конец вашего файла python.
импортировать pandas как pd
df = pd.DataFrame(data, columns=[‘comment’])
df.head()
Теперь вы узнали, как очищайте комментарии YouTube как с кодированием, так и без кодирования. Первый — использовать бесплатный инструмент Octoparse без кода, а второй — использовать скрипт Python.