为了账号安全,请及时绑定邮箱和手机立即绑定

从 youtube (Python) 获取链接时尝试查找第一个链接时输出的大部分时间为空列表

从 youtube (Python) 获取链接时尝试查找第一个链接时输出的大部分时间为空列表

冉冉说 2023-02-15 17:25:28
我遵循了本网站上的本教程, 以了解如何根据给定的查询从 youtube 中提取第一个链接。我已将代码实现为如下函数:import urllib.requestimport redef GetBestYoutubeLink(MusicRequest):         MusicSearchLink = MusicRequest.replace(" ","+")         MusicSearchLink = "https://www.youtube.com/results?search_query=" + MusicSearchLink         HTMLContent = urllib.request.urlopen(MusicSearchLink)         SearchResults = re.findall(r'href=\"\/watch\?v=(.{11})', HTMLContent.read().decode())         print(SearchResults)         BestLink = "http://www.youtube.com/embed/" + SearchResults[0]         return BestLink查询将传递到函数的位置,它将打印第一个/最佳 url。然而,我从这个解决方案中面临的问题是大多数时候 SearchResults 数组在打印时是空的,因此我无法获得第一个 url。这不像查询是一个不常见的查询,因为我曾尝试过流行歌曲和视频来获取其链接,但它只是返回为空,但它有时会与最佳链接的正确输出一起工作。为了找到解决方案,我在打印 SearchResults 数组和定义 BestLink 变量之间给出了以下语句:    if SearchResults == []:        print(SearchResults)        MusicPlayer(MusicRequest)如果 SearchResults 数组为空,则它会再次运行该函数。然而,它正在重新运行,有时会打印一个空列表 20 到 30 次,这根本没有效率。我想了解我的列表背后的问题可能是什么,大多数时候返回为空,但有时会填充,因此能够获得链接,我该如何解决这个问题?我当前的 python 版本是 3.6,我在 macOS Catalina 上运行。
查看完整描述

1 回答

?
慕田峪7331174

TA贡献1828条经验 获得超13个赞

我认为自本教程编写以来,查询返回的样式发生了变化。如果您打印,HTMLContent.read().decode()您可以看到 URL 的格式"url":"/watch?v=0755SXCTCN0"


我改变了你的代码,你也有一个search_results[0]不存在的。


import urllib.request

import re


def GetBestYoutubeLink(MusicRequest):

         MusicSearchLink = MusicRequest.replace(" ","+")

         MusicSearchLink = "https://www.youtube.com/results?search_query=" + MusicSearchLink

         HTMLContent = urllib.request.urlopen(MusicSearchLink)

         SearchResults = re.findall(r'/watch\?v=(.{11})', HTMLContent.read().decode())

         print(SearchResults)

         BestLink = "http://www.youtube.com/embed/" + SearchResults[0]

         return BestLink


查看完整回答
反对 回复 2023-02-15
  • 1 回答
  • 0 关注
  • 126 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号