Удаление ссылок на треки из плейлиста YouTube с помощью Beautiful Soup - PullRequest
0 голосов
/ 30 мая 2020

Я пытаюсь очистить все ссылки на треки из моего списка воспроизведения.

Это мой код

from selenium import webdriver 
from time import sleep
from bs4 import BeautifulSoup
from urllib.request import urlopen
import re

playlist = 'minimal_house'

url = 'https://www.youtube.com/channel/UCt2GxiTBN_RiE-cbP0cmk5Q/playlists'
html = urlopen(url)
soup = BeautifulSoup(html , 'html.parser')
tracks = soup.find(title = playlist).get('href')

print(tracks)

url = url + tracks
print(url)

html = urlopen(url)

soup = BeautifulSoup(html, 'html.parser')

links = soup.find_all('a',attrs={'class':'yt-simple-endpoint style-scope ytd-playlist-panel-video-renderer'})

print(links)

Я не смог очистить 'a'; ни id; ни по имени класса.

example of one track from playlist

1 Ответ

0 голосов
/ 30 мая 2020

у меня работает мой запутанный код:

from selenium import webdriver
from time import sleep
from bs4 import BeautifulSoup
from urllib.request import urlopen
import re

playlist = 'minimal_house'

url = 'https://www.youtube.com/channel/UCt2GxiTBN_RiE-cbP0cmk5Q/playlists'
html = urlopen(url)
soup = BeautifulSoup(html, 'html.parser')
tracks = soup.find('a', attrs={'title': playlist}).get('href')

print(tracks)

url = 'https://www.youtube.com' + str(tracks)
print(url)

html = urlopen(url)

soup = BeautifulSoup(html, 'html.parser')

links = soup.find_all('a')
links = set([link.get('href') for link in links if link.get('href').count('watch')])

print(links)

поскольку имена классов меняют базу по запросу устройства, в этом случае лучше получить все ссылки. и вам нужно использовать селен для прокрутки вниз, чтобы получить весь список.

...