3

youtube.com のページ ソースがスクレイピングできないのはなぜですか?

私は次のことを試しました(セレンサーバーでphantomjsと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
4

2 に答える 2

3

エンコーディングの問題です。次のバージョンが CRAN にリリースされるまで、今のところ開発バージョンを使用してください。

devtools::install_github("ropensci/RSelenium")
于 2015-05-02T08:32:37.000 に答える
0

問題はおそらくエンコーディングにあることに同意します。

たとえば、このような問題は、nasa.gov のWeb サイトで米ロ宇宙協力に関連するトピック ページにのみ表示されるようです (これは、Web ページ コンテンツのキリル文字が原因であることを示唆しています)。

Releniumdeprecated where RSeleniumfailsを使用して問題を解決しました。Releniumスムーズに実行するには、更新を防ぐようにUbuntu 16.04インストールして構成する必要がありました。Firefox 25.0セットアップ中のもう 1 つの問題は、 を適切にインストールすることでした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 ソリューションが失敗します (Firefox のバージョンが34.0.5、または25.0に関係なく):

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)
于 2016-07-31T15:27:31.073 に答える