使用python从单个youtube播放列表链接中提取单个链接 [英] Extract individual links from a single youtube playlist link using python

查看:49
本文介绍了使用python从单个youtube播放列表链接中提取单个链接的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要一个Python脚本,该脚本需要链接到单个youtube播放列表,然后给出一个包含播放列表中各个视频的链接的列表.

我意识到几年前曾问过同样的问题,但有人问它是否要使用python2.x,答案中的代码无法正常工作.它们很奇怪,有时可以工作,但偶尔会输出空(也许那里使用的某些软件包已经更新,我不知道).我在下面包含了其中的代码之一.

如果您不信任任何代码,请多次运行此代码,偶尔会收到一次空列表,但大多数情况下,它会分解播放列表.

来自bs4的

 将BeautifulSoup导入为bs汇入要求r = request.get('https://www.youtube.com/playlist?list=PL3D7BFF1DDBDAAFE5')页面= r.textsoup = bs(page,'html.parser')res = soup.find_all('a',{'class':'pl-video-title-link'})对于res in:打印(l.get("href")) 

对于某些播放列表,代码根本不起作用.

此外,如果beautifulsoup无法胜任这项工作,那么任何其他流行的python库也可以.

解决方案

似乎youtube有时加载页面的不同版本,有时使用 pl-video-title-link 代码>类:

 < td class ="pl-video-title">< a class ="pl-video-title-link yt-uix-tile-link yt-uix-sessionlink spf-link" dir ="ltr" href ="/watch?v = GtWXOzsD5Fw& amp; list = PL3D7BFF1DDBDAAFE5& amp;amp; index = 101& t = 0s"data-sessionlink =" ei = TJbjXtC8NYri0wWCxarQDQ& feature = plpp_video& ved = CGoQxjQYYyITCNCSmqHD_OkCFQrxtAodgqIK2ij6LA>Android应用程序开发教程-105-微调器和ArrayAdapter</a>< div class ="pl-video-owner">de< a href ="/user/thenewboston" class ="yt-uix-sessionlink spf-link" data-sessionlink ="ei = TJbjXtC8NYri0wWCxarQDQ& feature = playlist& ved = CGoQxjQYYyITCNCSmqHD_OkCFQgtxttt&t;< a> Jin< g< ija></div>< div class ="pl-video-bottom-standalone-badge"></div></td> 

有时将数据嵌入JS变量中并动态加载:

  window ["ytInitialData"] = {....这里有很大的json ....}; 

对于第二个版本,除非要使用硒之类的工具来在页面加载后获取内容,否则将需要使用正则表达式来解析Javascript.

IMO的最佳方法是使用官方API,该API很容易获得播放列表项:

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆