【问题标题】:Scraping YouTube links from a webpage从网页中抓取 YouTube 链接
【发布时间】:2019-07-25 04:27:25
【问题描述】:

我一直在尝试从网页中抓取 YouTube 链接,但没有任何效果。 这是我一直在尝试抓取的图片。:

这是我最近尝试的代码:

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

这是 YouTube 链接所在网站的链接:https://www.electronic-festivals.com/event/i-am-hardstyle-germany

【问题讨论】:

  • but nothing has worked - 你有什么错误?
  • 我现在可以使用它了。谢谢。

标签: python selenium web-scraping youtube screen-scraping


【解决方案1】:

大部分 youtube 链接都在 iframe 内,并且 javascript 也需要运行。尝试使用硒。以下提取任何包含youtube 的srchref。我只输入托管 youtube 剪辑的关键 iframe。你可以循环所有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()

【讨论】:

  • 谢谢!我不知道 iframe 标签。不过,我没有使用硒。有效的代码是: youtube_link = soup.find('iframe')['src'] (对于不断的编辑,我很抱歉。我不习惯在这里提问)。再次感谢!
【解决方案2】:

如果你的意思是抓取下载,试试

pip install youtube-dl

在你的外壳中。

【讨论】:

    猜你喜欢
    • 2023-03-26
    • 1970-01-01
    • 2020-08-08
    • 1970-01-01
    • 2021-12-02
    • 2021-03-10
    • 1970-01-01
    • 2020-11-17
    • 2019-02-16
    相关资源
    最近更新 更多