【发布时间】: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