使用 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 中抓取用户视频的主要内容,如果未能解决你的问题,请参考以下文章

rvest - 在 1 个标签中抓取 2 个类

使用 rvest 迭代地抓取许多链接时找到标签的替代版本

使用 rvest 抓取可折叠表的问题

使用RVest从网站抓取表格

用rvest抓取时没有数据

Rvest 和 Google 新闻网页抓取:不起作用