2017-04-17 4 views
1

몇 가지 비슷한 질문을 보았지만 해결 방법이 없습니다. 각 노드의 링크 URL을 가져 오려고하지만 목록은 null 값입니다.rvest로 링크 (href)를 긁을 때 NAs 수신

beer <- read_html("https://www.beeradvocate.com/lists/top/") 

beerLink <- beer %>% 
html_nodes(".hr_bottom_light a b") %>% 
html_attr('href') %>% 
as.data.frame() 

어떤 도움을 주시면 감사하겠습니다.

답변

1

b은 자손 노드이지만 a에 원하는 링크가 포함되어 있습니다. 당신은 (내가 xpath 버전 만 잘 알고, 당신이 CSS를 선호하는 것 같다) 일부 하위 패턴 주위를 검색 할 수 있지만,이 대안은 링크 당신이없이 원하는 가져옵니다 또한

#using a stub to facilitate accessing the URLs later with 
# an absolute address 
stub = 'https://www.beeradvocate.com' 
beer <- read_html(paste0(stub, '/lists/top/')) 
lnx = beer %>% html_nodes('a') %>% html_attr('href') %>% 
    #this pattern matches beer profile links -- 
    # the first . is a brewery ID, the second . 
    # is a beer ID within that brewery 
    grep('profile/.*/.*/', ., value = TRUE) %>% 
    paste0(stub, .) 
head(lnx) 
# [1] "https://www.beeradvocate.com/beer/profile/23222/78820/" 
# [2] "https://www.beeradvocate.com/beer/profile/28743/136936/" 
# [3] "https://www.beeradvocate.com/beer/profile/28743/146770/" 
# [4] "https://www.beeradvocate.com/beer/profile/28743/87846/" 
# [5] "https://www.beeradvocate.com/beer/profile/863/21690/"  
# [6] "https://www.beeradvocate.com/beer/profile/17981/110635/" 

을, 아브 락 사스는 놀라운 맥주입니다 및 산타나 앨범