Парсинг ютуб selenium + bs4 + multiprocessing PYTHON
Час добрый
Подскажите пожалуйста каким образом можно реализовать парсинг канала чтобы получить следующее:\
- Первые 40 видео на канале (если их меньше, то все что есть)
- Ссылки на видео, описание каждого видео и их дата выхода
- Описание профиля канала (в странице about)
Все выходные данные нужно записать в csv. На данный момент есть общее понимание ситуации с примерным кодом, но не понимаю как лучше реализовать задачу с использованием нескольких процессов и сохранением всего в csv
from selenium import webdriver
from bs4 import BeautifulSoup
from multiprocessing import Pool
link_all_videos = []
link_all_videos_info = []
with open("links.txt", "r") as ins:
for line in ins:
link_all_videos.append(line)
print(f'[INFO] Всего аккаунтов для обработки: {len(link_all_videos)}')
for line_info in link_all_videos:
line_info = line_info.split('\n')
link_all_videos_info.append(line_info[0])
def get_videos_link(link_all_videos_info):
В функции get_video_link планирую подгрузить все селениумом и достать от туда код страницы. После пройтись по всем классам "style-scope ytd-grid-renderer", в которых лежат видео и достать от туда все href
Подскажите как можно достать только первые 40 видео со страницы? (если их меньше, то все что есть) и как потом сохранить информацию в csv чтобы получить следующий вид:\
- Столбец 1 - название канала
- Столбец 2 - описание канала
- Столбец 3 - ссылки в описании канала (если есть, если нет - пустота)
- Столбец 4 - ссылка на видео
- Столбец 5 - дата выхода видео
- Столбец 6 - описание видео
Ниже часть с включением мультипроцессов. В качестве ориентира они запускаются для каждой ссылки на канал.
def main():
try:
process_count = int(input('[INFO] Введите количество процессов: '))
p = Pool(processes=process_count)
p.map(get_videos_link, link_all_videos_info)
main()
except Exception as ex:
raise ex
Пример выходной таблицы
https://docs.google.com/spreadsheets/d/1v-5MbfNSWoTjMd9iKUUUCH_Rdx1eXgqd0gJzPRqa6VI/edit#gid=0