使用 rvest 在 Twitter 中抓取用户视频
Posted
技术标签:
【中文标题】使用 rvest 在 Twitter 中抓取用户视频【英文标题】:Scraping users video in Twitter with rvest 【发布时间】:2018-10-25 13:36:27 【问题描述】:我正在使用rvest
抓取网络中的一些网络静态元素。但是,我无法抓取动态内容。比如下面video post中如何抓取观众数(44K)?
我试过这个:
library(rvest)
video_tweet = html("https://twitter.com/estrellagalicia/status/993432910584659968")
video_tweet %>%
html_nodes("#permalink-overlay #permalink-overlay-dialog div #permalink-overlay-body div div div div div div div div div div div div span div div div div span span") %>% as.character()
【问题讨论】:
您需要使用 Rselenium。你应该阅读一些 Rselenium 教程。 【参考方案1】:您需要使用 Rselenium,并且应该为它选择正确的 css。这应该可以:
library(RSelenium)
library(rvest)
rmDr <- rsDriver(browser = "chrome")
myclient <- rmDr$client
video_tweet = "https://twitter.com/estrellagalicia/status/993432910584659968"
myclient$navigate(video_tweet)
mypagesource <- myclient$getPageSource()
read_html(mypagesource[[1]]) %>%
html_nodes("#permalink-overlay-dialog > div.PermalinkOverlay-content > div > div > div.permalink.light-inline-actions.stream-uncapped.has-replies.original-permalink-page > div.permalink-inner.permalink-tweet-container > div > div.js-tweet-details-fixer.tweet-details-fixer > div.card2.js-media-container.has-autoplayable-media > div.PlayableMedia.LiveBroadcastCard-playerContainer.LiveBroadcastCard--supportsLandscapePresentation.watched.playable-media-loaded > div > div > div > div:nth-child(2) > div.rn-1oszu61.rn-1efd50x.rn-14skgim.rn-rull8r.rn-mm0ijv.rn-13yce4e.rn-fnigne.rn-ndvcnb.rn-gxnn5r.rn-1nlw0im.rn-deolkf.rn-6koalj.rn-1pxmb3b.rn-7vfszb.rn-eqz5dr.rn-1r74h94.rn-1mnahxq.rn-61z16t.rn-p1pxzi.rn-11wrixw.rn-ifefl9.rn-bcqeeo.rn-wk8lta.rn-9aemit.rn-1mdbw0j.rn-gy4na3.rn-u8s1d.rn-1lgpqti > span > div > div.rn-1oszu61.rn-1efd50x.rn-14skgim.rn-rull8r.rn-mm0ijv.rn-13yce4e.rn-fnigne.rn-ndvcnb.rn-gxnn5r.rn-deolkf.rn-6koalj.rn-1pxmb3b.rn-7vfszb.rn-eqz5dr.rn-1mnahxq.rn-61z16t.rn-p1pxzi.rn-11wrixw.rn-ifefl9.rn-bcqeeo.rn-wk8lta.rn-9aemit.rn-1mdbw0j.rn-gy4na3.rn-bnwqim.rn-1lgpqti > div > div > span > span") %>% as.character()
【讨论】:
感谢您的回复。在运行 rsDriver() 后,我遇到了 RSelenium 问题:“请确保 Selenium 服务器正在运行”。我应该在 chrome 上安装一些插件(如 Phantom)吗? 我以前从未遇到过这个问题。您是否尝试过寻找解决方案?以上是关于使用 rvest 在 Twitter 中抓取用户视频的主要内容,如果未能解决你的问题,请参考以下文章