【问题标题】:rselenium | get youtube page source硒|获取 youtube 页面源
【发布时间】:2015-07-11 18:08:27
【问题描述】:

为什么 youtube.com 的页面源无法抓取?

我尝试了以下方法(使用 phantomjs 以及带有 selenium 服务器的 chrome)

library(RSelenium)
pJS <- phantom(pjs_cmd = ...)
Sys.sleep(5) # give the binary a moment
remDr <- remoteDriver(browserName = 'phantomjs')
remDr$open()
remDr$navigate("https://www.youtube.com/")
remDr$getTitle()[[1]] # [1] "YouTube"
remDr$getPageSource()

返回:

Error in fromJSON(content, handler, default.size, depth, allowComments,  : 
  invalid JSON input

【问题讨论】:

    标签: r selenium youtube selenium-chromedriver rselenium


    【解决方案1】:

    这是编码的问题。暂时使用开发版本,直到下一个版本发布到 CRAN:

    devtools::install_github("ropensci/RSelenium")
    

    【讨论】:

      【解决方案2】:

      我同意问题很可能与编码有关。

      例如,nasa.gov 网站上似乎只出现在与美俄空间合作相关的主题页面上(这表明这是由于网页内容中的西里尔字符造成的)。

      我通过使用已弃用的Relenium 解决了这个问题,其中RSelenium 失败了。为了让ReleniumUbuntu 16.04 上顺利运行,我必须安装Firefox 25.0 并对其进行配置以防止任何更新。设置过程中的另一个问题是正确安装rJava,这可能会由于缺少具有指向Java 库的正确路径的环境变量而失败。

      系统配置如下:

      R version 3.3.1 (2016-06-21)
      Platform: x86_64-pc-linux-gnu (64-bit)
      Running under: Ubuntu 16.04.1 LTS
      
      relenium_0.3.0; seleniumJars_2.41.0; rJava_0.9-8; RSelenium_1.3.5 
      

      下面是一个可以用 Relenium 抓取但不能用 RSelenium 发行版抓取的页面示例:

      link = "http://www.nasa.gov/mission_pages/station/expeditions/expedition14/index.html"
      

      RSelenium 解决方案失败(无论是 34.0.525.0 版本的 Firefox):

      startServer()
      remDr <- remoteDriver()
      remDr$open()
      remDr$navigate(link)
      doc = unlist(remDr$getPageSource())
      

      结果:“fromJSON(content, handler, default.size, depth, allowComments, : 无效的 JSON 输入”

      虽然 Relenium 没问题:

       relenium_browser <- firefoxClass$new()
       relenium_browser$get(link)
       doc = unlist(relenium_browser$getPageSource())
       doc = read_html(doc)
      

      【讨论】:

      • firefox 47 和 selenium 存在问题。有一个发布的 Firefox 47.01,但它似乎不适用于 ubuntu。您可以安装适用于当前版本的 RSelenium 的 firefox 48。见mozilla.org/en-US/firefox/47.0.1/releasenotes
      猜你喜欢
      • 1970-01-01
      • 2019-02-16
      • 1970-01-01
      • 1970-01-01
      • 2020-04-20
      • 1970-01-01
      • 1970-01-01
      • 2023-01-14
      • 2017-05-07
      相关资源
      最近更新 更多