【问题标题】:Web scraping video information from youtube using python使用 python 从 youtube 上抓取视频信息
【发布时间】:2019-12-30 03:54:11
【问题描述】:

我想使用 python 提取某个 Youtube 视频的视频信息(如标题、观看人数),就像我在其他网站上进行网页抓取一样。但由于某种原因,它要么不返回任何内容,要么只为侧面的推荐视频提供标签,而不是 URL 的“主视频”

我尝试了在其他网站上用于网络抓取的相同代码,如下所示。显然它在 Youtube 上不起作用。如果我想根据 youtube URL 获取视频信息,我应该怎么做?

import requests
from bs4 import BeautifulSoup

base_url ='https://www.youtube.com/watch?'
search_string = 'v=I41aLSzLI50'
url = base_url + search_string
supers=requests.get(url).content    
data = BeautifulSoup(supers,'html.parser')
videos =data.find_all('a', class_= 'content-link spf-link yt-uix-sessionlink spf-link')
for video in videos:
    print(video.find('span', class_='title').get_text())

【问题讨论】:

  • 首先您应该检查页面是否没有使用 JavaScript 添加内容 - BeautifulSoup 无法运行 JavaScript。您还可以打印来自requests 的内容,看看您会得到什么。也许你得到不同的东西然后你可以在网络浏览器中得到。它可以发送验证码或警告消息等。
  • 尝试使用youtube_dl 模块
  • 您不使用 youtube api 有什么原因吗? developers.google.com/youtube/v3
  • 没有具体原因,只是我是那个只知道BeautifulSoup的初学者。我猜我看不到主视频的 HTML 内容的原因是页面使用了 JavaScript。让我按照你们的建议尝试 youtube_dl 和 youtube api。非常感谢!
  • 但另一个问题是为什么我看不到任何代码只是因为它是在 Javascript 中的?

标签: python web youtube web-crawler


【解决方案1】:

我在 YouTube 上查找了一个页面,您要查找的内容似乎不在原始来源中(至少不在您期望的位置)。当您的浏览器呈现页面时,有一些脚本会创建内容。根据我的经验,您有几种选择。

  1. 使用评论者建议的 API 之一。我对这些不是很熟悉,但它可能会花费你一些时间和精力。由于页面格式的变化(可能需要更新脚本),网页抓取可能会出现问题。

  2. 如果您坚持网页抓取,您可以使用自动浏览器。我曾经定期使用 Selenium,它应该可以满足您的目的。这将允许您使用脚本生成的内容。

  3. 我查看了页面源代码,您要查找的信息似乎包含在某些标签中,但是解析这将很痛苦。

【讨论】:

    猜你喜欢
    • 2012-12-02
    • 2014-01-28
    • 2011-07-08
    • 2020-12-03
    • 1970-01-01
    • 2011-09-08
    • 2023-01-21
    • 2013-03-03
    • 2015-04-14
    相关资源
    最近更新 更多