【发布时间】:2020-10-20 11:53:28
【问题描述】:
我无法从 YouTube 视频页面中抓取某些数据来创建数据集。我成功地抓取了其他网页进行练习,但似乎无法让它适用于我的实际用例。
具体来说,我正在尝试在 video_ids 向量中获取每个 YouTube 频道的用户名。检查以下元素时,可以在视频页面的 HTML 中找到它:
<a class="yt-simple-endpoint style-scope ytd-video-owner-renderer" tabindex="-1" href="/user/BonAppetitDotCom"> .... </a>
我有以下 R 脚本:
library(rvest)
# 3 random trending YouTube videos
videos <- c("2kyS6SvSYSE","iIxy3JN3-jc","jr9QtXwC9vc")
for (video in videos) {
url <- paste0("https://www.youtube.com/watch?v=",video,"/")
webpage <- read_html(url) #outputs a list of 2: <head> and <body> content
#narrow down the elements to fetch what I need
data <- html_nodes(webpage, '.ytd-video-owner-renderer a') #returns an empty list
...
print(...)
}
脚本将继续从data 列表中获取某个元素,其中html_text 将包含我需要的值。
我还尝试通过 XPath 获取元素:
data <- html_nodes(webpage, xpath="/html/body/ytd-app/div/ytd-page-manager/ytd-watch-flexy/div[4]/div[1]/div/div[6]/div[3]/ytd-video-secondary-info-renderer/div/div[2]/ytd-video-owner-renderer/a") 返回相同的空列表。
知道我的方法有什么问题,或者是否有更好的方法来获取我需要的数据?
【问题讨论】:
-
Youtube确实提供了API,你有没有尝试过获取数据?
标签: r web-scraping rvest