使用 Beautiful Soup 从命令行启动 youtube 链接时遇到问题自动化无聊的东西 CH12

问题描述

我最近完成了名为“打开所有搜索结果”的“自动化无聊的东西”第 12 章项目 - 并正在尝试将提供的示例调整到其他网站。

有问题的代码将搜索查询的命令行参数带到 pypi.org,从 HTML 元素解析,并打开与该查询相关的 5 个 URL。

示例中提供的代码:

import requests,sys,webbrowser,bs4
print("Searching...")
res = requests.get('https://pypi.org/search/?q=' + ''.join(sys.argv[1:]))
res.raise_for_status()

soup = bs4.BeautifulSoup(res.text,'html.parser')
linkElems = soup.select('.package-snippet')
numOpen = min(5,len(linkElems))
for i in range(numOpen):
    urlToOpen = 'https://pypi.org' + linkElems[i].get('href')
    print('Opening ',urlToOpen)
    webbrowser.open(urlToOpen)

我正在尝试在 youtube 网站上复制此内容,但从 Chrome 开发人员选项中显示的元素中访问 href 时运气不佳:

import requests,bs4
print("Searching...")
res = requests.get('https://www.youtube.com/results?search_query=' + ''.join(sys.argv[1:]))
res.raise_for_status()

#webbrowser.open('https://www.youtube.com/results?search_query=' + ''.join(sys.argv[1:]))
#This works fine,and searches my command argument


soup = bs4.BeautifulSoup(res.text,'html.parser')
linkElems = soup.select('#video-title.yt-simple-endpoint.style-scope.ytd-video-renderer')
numOpen = min(5,len(linkElems))
for i in range(numOpen):
    print(linkElems[i])
    urlToOpen = 'https://www.youtube.com' + linkElems[i].get('href')
    print('Opening ',urlToOpen)
    webbrowser.open(urlToOpen)

我尝试只搜索一个有效的命令行参数,我也尝试搜索 soup.find_all('a',href = True),但这仅返回支持链接

我需要指定哪个 html 属性类才能访问 #video-title.yt-simple-endpoint.style-scope.ytd-video-renderer 类下的 href 链接?

*注意,我正在检查的特定链接是视频的标题 - 但您似乎也可以从缩略图中查看 href。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)