5

rvestPGA ゴルファーの生年月日を抽出するために使用しようとしています。スチュアート・アップルビーを試してみましょう。ESPN Web サイトhttp://espn.go.com/golf/player/_/id/11/stuart-applebyの彼のプロフィールは次のとおりです。彼のヘッドショットの横にある彼の生年月日に注目してください。

library("rvest")
url <- "http://espn.go.com/golf/player/_/id/11/stuart-appleby"
li_node <- url %>% html %>% html_nodes("li")

彼の生年月日は、li_node の項目 22 に含まれています。[[22]] を自分のプログラムにハード コードしないのが理想ですが、そうしてもエラーが発生します。

li_node[[22]]

必要な情報が表示されますが、次のようなものです:

word(li_node[[22]], ...)
substr(li_node[[22]], ...)
pluck(li_node, 22)

すべてエラーを返します:

> word(li_node[[22]], 1)
Error in rep(string, length = n) : 
  attempt to replicate an object of type 'externalptr'
> substr(li_node[[22]], 1, 2)
Error in as.vector(x, "character") : 
  cannot coerce type 'externalptr' to vector of type 'character'
> pluck(li_node, 22)
Error in FUN(X[[1L]], ...) : 
  object of type 'externalptr' is not subsettable

を使用してその DOB を取得する簡単な方法はありrvestますか?

4

1 に答える 1

6
library("rvest")
library("stringr")
url <- "http://espn.go.com/golf/player/_/id/11/stuart-appleby"
url %>% 
  html %>% 
  html_nodes(xpath='//li[contains(.,"Age")]') %>% 
  html_text() %>% 
  str_extract("[A-Z][a-z]{2,} [0-9]{1,2}, [0-9]{4}")

戻り値:

[1] "May 1, 1971"
于 2015-02-26T17:58:31.257 に答える