【问题标题】:How to webscrape share counts in R如何在 R 中抓取共享计数
【发布时间】:2016-07-08 12:44:01
【问题描述】:

我正在尝试从本网站http://www.r-bloggers.com/erum-2016-first-european-conference-for-the-programming-language-r/的左侧SumoMe插件下载分享数

我尝试使用基于rvest包的R代码

> library(rvest)
Loading required package: xml2
> url <- 'http://www.r-bloggers.com/erum-2016-first-european-conference-for-the-programming-language-r/'
> read_html(url) %>%
+   html_nodes('.wpusb-counts span')
{xml_nodeset (1)}
[1] <span data-element="total-share"></span>

但收到的回复是空的。 该页面看起来从 0 共享计数开始,然后在您在该网站上花费时间后几秒钟后更新。有人可以提出任何可能的解决方案或建议任何软件包吗? RSelenium 是一个很好的软件包吗?我以前没用过。

【问题讨论】:

    标签: r web-scraping rvest webharvest


    【解决方案1】:

    看起来该值是由 javascript 异步加载的,所以是的,RSelenium 可能是您最好的选择。我最终在 Firebug 中使用 xpath 选择器将该参数传递给 browser$findElement

    library(RSelenium)
    
    browser <- remoteDriver()
    browser$open()
    browser$navigate('http://www.r-bloggers.com/erum-2016-first-european-conference-for-the-programming-language-r/')
    value <- browser$findElement(using = 'xpath', '/html/body/div[5]/div/div[1]/div/span')
    print(value$getElementText())
    
    [[1]]
    [1] "7"
    

    【讨论】:

    • 简单、简短、令人惊叹。 R很强大!你必须为那个 sn-p 使用 startServer 函数吗?
    • 我没有,但我也在运行 ubuntu 14.04,它在没有该命令的情况下工作,但在另一个操作系统上可能是不同的故事。
    • 我收到&gt; library(RSelenium) Loading required package: RCurl Loading required package: bitops Loading required package: RJSONIO Loading required package: XML Attaching package: ‘XML’ The following object is masked from ‘package:rvest’: xml &gt; &gt; browser &lt;- remoteDriver() &gt; browser$open() [1] "Connecting to remote server" Undefined error in RCurl call. Error in queryRD(paste0(serverURL, "/session"), "POST", qdata = toJSON(serverOpts)) :
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-18
    • 1970-01-01
    • 2015-08-28
    • 1970-01-01
    • 1970-01-01
    • 2020-10-14
    • 2011-08-07
    相关资源
    最近更新 更多