соскабливание ссылок на YouTube с веб-страницы - PullRequest
0 голосов
/ 03 марта 2019

Я пытался почистить ссылки на YouTube с веб-страницы, но ничего не помогло. Это изображение того, что я пытался очистить.

Это код, который я пробовал совсем недавно:

youtube_link = soup.find("a", class_="ytp-title-link yt-uix-sessionlink")

И это ссылка навеб-сайт, на котором находится ссылка на YouTube: https://www.electronic -festivals.com / event / i-am-hardstyle-germany

Мне это действительно нужно для работы.Заранее спасибо.

1 Ответ

0 голосов
/ 04 марта 2019

Большинство ссылок на YouTube находятся в пределах iframe, и javascript также должен быть запущен.Попробуйте использовать селен.Следующие извлечения любые src или href, содержащие youtub e.Я только ввожу ключевой iframe хостинг клипа YouTube.Вы можете зациклить все проверки iframes.

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

def addItems(links, final):
    for link in links:
        ref = link.get_attribute('src') if link.get_attribute('src') is not None else link.get_attribute('href')
        final.append(ref)
    return final

url = "https://www.electronic-festivals.com/event/i-am-hardstyle-germany" 
driver = webdriver.Chrome()
driver.get(url)
driver.switch_to.frame(driver.find_element_by_css_selector('.media-youtube-player'))
final = []

try:
    links = WebDriverWait(driver, 10).until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, "[href*=youtube] , [src*=youtube]")))
    addItems(links, final)
except:
    pass
finally:
    driver.switch_to.default_content()

links = driver.find_elements_by_css_selector('[href*=youtube] , [src*=youtube]')
addItems(links, final)

for link in set(final):
    print(link)

driver.quit()
...