Próbuję użyć rvest
, aby wyodrębnić datę urodzenia dla golfistów PGA. Spróbujemy Stuart Appleby. Oto jego profil na stronie ESPN http://espn.go.com/golf/player/_/id/11/stuart-appleby. Zauważ jego DOB obok jego headshot.Błąd Rvest: wpisz "externalptr"
library("rvest")
url <- "http://espn.go.com/golf/player/_/id/11/stuart-appleby"
li_node <- url %>% html %>% html_nodes("li")
Jego DOB zawarte jest w pozycji 22 na li_node. Idealnie, nie chciałbym twardego kodu [[22]] do mojego programu, ale nawet gdy to robię, napotykam na błędy.
li_node[[22]]
wyświetla informacji chcę, ale rzeczy takie jak:
word(li_node[[22]], ...)
substr(li_node[[22]], ...)
pluck(li_node, 22)
wszystkich zwróci błąd:
> 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
Czy istnieje prosty sposób dla mnie, aby pobrać ten DOB korzystając rvest
?
Bardzo dobre. Teraz, aby wyodrębnić część "1 maja 1971", mogę zrobić: 'dob <- url %>% html%>% html_nodes (xpath = '// li [zawiera (.," Wiek ")]')%>% html_text () substr (dob, 11, nchar (dob) - 10) ' – hossibley
edytować odpowiedź, aby dodać część str_extract, aby uzyskać ciąg daty ... – cory
Jeszcze lepiej! Dzięki! – hossibley