2015-02-26 9 views
5

मैं पीजीए गोल्फर के लिए जन्म तिथि निकालने के लिए rvest का उपयोग करने की कोशिश कर रहा हूं। आइए स्टुअर्ट ऐप्पलबी आज़माएं। ईएसपीएन वेबसाइट http://espn.go.com/golf/player/_/id/11/stuart-appleby पर उनकी प्रोफ़ाइल यहां दी गई है। अपने हेडशॉट के बगल में अपने डीओबी पर ध्यान दें।निवेश त्रुटि: टाइप करें 'बाहरीptr'

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 

वहाँ कि जन्म तिथि rvest का उपयोग कर हड़पने के लिए मेरे लिए एक आसान तरीका है?

उत्तर

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" 
+1

बहुत अच्छा। अब "मई 1, 1 9 71" निकालने के लिए मैं भाग कर सकता हूं: 'dob <- url %>% html%>% html_nodes (xpath = '// li [शामिल है (।," आयु ")]')%>% html_text () सबस्ट्रेट (डॉब, 11, एनचर (डॉब) - 10) ' – hossibley

+0

दिनांक स्ट्रिंग प्राप्त करने के लिए str_extract भाग जोड़ने के लिए संपादित उत्तर ... – cory

+0

इससे भी बेहतर! धन्यवाद! – hossibley

संबंधित मुद्दे