python - 使用 python 和 selenium 从主页中提取所有 youtube 视频 url
问题描述
我正在寻找构建一个 Youtube 推荐刮板,它会刮取 Youtube 主页,寻找 youtube 视频 ID/链接,以便以后使用 youtube-dl 下载。但是,我不知道如何/在哪里实际获取此信息。
我尝试的代码如下:
from selenium import webdriver
driver = webdriver.Chrome('./chromedriver/chromedriver')
driver.get("https://www.youtube.com")
while True:
data = driver.find_elements_by_xpath("?")
for i in data:
l = i.get_attribute('href') #Should obtain some of the links/ids on the page but is None...
解决方案
您的选择与任何元素都不匹配。通过简单查看我的 youtube 头版的 html 源代码,我注意到每个包含视频的元素都是 id 'thumbnail' 的 a-tag,它也具有直接属性 'href':
鉴于此,您可以通过这个确切的 id 找到元素并从中提取给定的属性“href”并通过简单的列表理解过滤它,如下所示:
driver.get("https://www.youtube.com")
hrefs = [video.get_attribute('href') for video in driver.find_elements_by_id("thumbnail")]
for href in hrefs:
print(href)
输出:
https://www.youtube.com/watch?v=PcYxbxXJhcc
https://www.youtube.com/watch?v=oTL52-NvyE4
https://www.youtube.com/watch?v=8kVI621fZug
https://www.youtube.com/watch?v=Pr9TdbTDMH0
https://www.youtube.com/watch?v=iL9upp5jahg
https://www.youtube.com/watch?v=iWnb3IqCfgc
https://www.youtube.com/watch?v=ehAwNw4xDRM
https://www.youtube.com/watch?v=PzVj7s4JZhE
https://www.youtube.com/watch?v=7fBdqdqRxFM
https://www.youtube.com/watch?v=WMweEpGlu_U
https://www.youtube.com/watch?v=2ljGwsbRLaI
https://www.youtube.com/watch?v=aUgEPebvR2Q
https://www.youtube.com/watch?v=Gh6ovYtD2Q8
https://www.youtube.com/watch?v=dVICcSLIHCM
https://www.youtube.com/watch?v=bl6mPR5t6Dk
https://www.youtube.com/watch?v=mMKXCfTDjvg
https://www.youtube.com/watch?v=z_HhNWNm_jo
https://www.youtube.com/watch?v=ZtiqfY8fixU
https://www.youtube.com/watch?v=9eAcRFlXxgo
https://www.youtube.com/watch?v=omC2eg-d-6Q
https://www.youtube.com/watch?v=E90SOw7fIVk
https://www.youtube.com/watch?v=5qap5aO4i9A
https://www.youtube.com/watch?v=T3ua3xTfbFI
https://www.youtube.com/watch?v=DTvS9lvRxZ8
在抓取之前始终分析目标源的 html 结构,然后选择最适合查找数据的方法。
推荐阅读
- xamarin - 在带有模型绑定的图像中显示来自本地计算机的图像
- android - Android Parse JSON 响应格式化输出
- html - Bootstrap 4 尝试获取此网格格式
- gitlab-ci - Gitlab CI 将文件复制到运行器主机
- jdbc - Hive JDBC开发的服务应用失败如何处理?
- python - 如何根据平均值为 pyplot 极坐标图着色
- matlab - Matlab - 串行超时但接收到的数据良好,多字节数据类型发送
- angular - 角度材料垫选择中的值必须是多选模式中的数组
- python - Numpy.allclose - 根据二进制值的相似性百分比确定容差
- react-native - 如何在本机反应中使我的 Flatlist 项目全高?