2017-11-14 1 views
0

문제가 있습니다. 웹 사이트에서 정보를 추출해야합니다 : https://www.transfermarkt.co.uk/premier-league/startseite/wettbewerb/GB1 클럽 이름, 웹 사이트 주소 (transfermarkt profile) 및 팀 프로필의 스타디움 이름. 이것이 웹 사이트에서 데이터를 추출한 첫 번째 연락처입니다. 어떤 도움을 주셔서 감사합니다. 처음에는 그런 코드를 작성했습니다 :HTML 테이블을 R 데이터 프레임으로 긁음

library(rvest) 
theurl <- "https://www.transfermarkt.co.uk/premier-league/startseite/wettbewerb/GB1" 
file<-read_html(theurl) 
tables<-html_nodes(file, "table") 
table1 <- html_table(tables[4], fill = TRUE) 
+0

정확히 필요한 매개 변수는 무엇입니까? "PREMIER LEAGUE 17/18의 클럽"테이블? –

+0

html_nodes (file, "table") %> % html_nodes (href) 파일을 볼 수 있다면 정규 표현식의 문제입니다. –

+0

팀 프로필에서 클럽, 웹 사이트 클럽 및 경기장 이름이 필요한 테이블이 필요합니다. . – Kim

답변

0

@Henry Navarro가 지적한대로, 어떤 노드 등이 정확히 필요한지는 명확하지 않습니다. 올바른 노드를 찾는 것은 시간이 많이 걸리는 작업이므로 원하는 노드를 지정해야합니다. 이 목적으로 Selectorgadget을 사용할 수 있습니다.

다음 예제에서는 정보를 추출하기 위해 rvest로 반복해야하는 팀 웹 사이트 목록을 생성하는 방법을 보여주는 간단한 예제입니다. 지금까지 누락 된 주요 기능은 html_attr()입니다 (예 : this answer 참조). 물론이 사이트의 노드를 찾아 경기장 등의 정보를 추출해야합니다.

file %>% 
html_nodes("table") %>% 
{ .[4]} %>% 
html_nodes("a") %>% 
html_attr("href") %>% 
{ .[grep("/startseite/verein",., fixed=T)]} %>% 
unique() %>% 
{ paste0("https://www.transfermarkt.co.uk", .) } 

# [1] "https://www.transfermarkt.co.uk/fc-chelsea/startseite/verein/631/saison_id/2017"    
# [2] "https://www.transfermarkt.co.uk/manchester-city/startseite/verein/281/saison_id/2017"   
# [3] "https://www.transfermarkt.co.uk/manchester-united/startseite/verein/985/saison_id/2017"   
# [4] "https://www.transfermarkt.co.uk/tottenham-hotspur/startseite/verein/148/saison_id/2017" 
#... 
+0

그게 바로 제가 의미했던 것입니다, 감사합니다. 각 클럽의 스타디움에 대해 어떻게 알 수 있습니까? – Kim

+0

브라우저에서 긁어 낸 "startseite"사이트 중 하나로 이동하십시오. 그런 다음이 사이트에서 Selectorgadget을 사용하여 추출 할 노드, 즉 경기장에 대한 정보가있는 노드를 식별하십시오. 이것은 다른 모든 클럽의 링크 구조와 동일해야합니다 (아마 클럽 이름을 고려해야 할 것입니다). 이 정보를 사용하여 긁어 내어야하는 모든 페이지에 대한 루프를 작성할 수 있습니다. 그러나 사려 깊고, 웹 사이트의 조건을 존중하고, 짧은 시간에 높은 트래픽을 발생시키는 많은 사이트를 다쳤다면 생성 된 트래픽을 줄이기 위해 스크립트에 일시 중지를 추가 할 수 있습니다. –

관련 문제