2017-02-14 3 views
1

Да, это просто еще один вопрос «как очистить». Извините за это, но я прочитал предыдущие ответы и руководство для rvest.r rvest webscraping hltv

Я делаю веб-соскабливание для своей домашней работы (поэтому я не планирую использовать данные для какой-либо коммерческой проблемы). Идея состоит в том, чтобы показать, что среднее умение команды влияет на индивидуальное умение. Я пытаюсь использовать данные CS: GO из HLTV.org.

Информация доступна на http://www.hltv.org/?pageid=173&playerid=9216

мне нужны две таблицы: Keystats (только данные) и игроков (данные и URL-адресов). Я пытаюсь использовать селектор CSS, созданный с помощью SelectorGadget, и также попытался проанализировать исходный код веб-страницы. Я потерпел неудачу. Я делаю следующее:

library(rvest) 
library(dplyr) 

url <- 'http://www.hltv.org/?pageid=173&playerid=9216' 
info <- html_session(url) %>% read_html() 
info %>% html_node('.covSmallHeadline') %>% html_text() 

Не могли бы вы рассказать мне, что это правильный селектор CSS?

+1

Допускает ли этот сайт автоматизированного выскабливания? – GGamba

ответ

3

Если вы посмотрите на источник, то эти таблицы не являются таблицами HTML, а просто груды div с несогласованным вложением и встроенным CSS для выравнивания. Таким образом, проще всего просто захватить весь текст и исправить строки впоследствии, так как данные либо все числовые, либо вообще отсутствуют.

library(rvest) 
library(tidyverse) 

h <- 'http://www.hltv.org/?pageid=173&playerid=9216' %>% read_html() 

h %>% html_nodes('.covGroupBoxContent') %>% .[-1] %>% 
    html_text(trim = TRUE) %>% 
    strsplit('\\s*\\n\\s*') %>% 
    setNames(map_chr(., ~.x[1])) %>% map(~.x[-1]) %>% 
    map(~data_frame(variable = gsub('[.0-9]+', '', .x), 
        value = parse_number(.x))) 

#> $`Key stats` 
#> # A tibble: 9 × 2 
#>     variable value 
#>      <chr> <dbl> 
#> 1    Total kills 9199.00 
#> 2    Headshot %% 46.00 
#> 3    Total deaths 6910.00 
#> 4    K/D Ratio  1.33 
#> 5    Maps played 438.00 
#> 6   Rounds played 11242.00 
#> 7 Average kills per round  0.82 
#> 8 Average deaths per round  0.61 
#> 9    Rating (?)  1.21 
#> 
#> $TeammatesRating 
#> # A tibble: 4 × 2 
#>     variable value 
#>      <chr> <dbl> 
#> 1 Gabriel 'FalleN' Toledo 1.11 
#> 2 Fernando 'fer' Alvarenga 1.11 
#> 3 Joao 'felps' Vasconcellos 1.09 
#> 4 Epitacio 'TACO' de Melo 0.98 
+0

Спасибо, что помогли мне во второй раз. В прошлый раз я попробовал забавный учебник для rvest, который вы посоветовали. Не могли бы вы рассказать мне, как я могу сохранить URL-адреса для таблицы «Друзья»? – Petr

+0

Они относительны, поэтому вам нужно вставить их на базовый URL, но 'h%>% html_nodes ('. CovSmallHeadline img ~ a')%>% html_attr ('href')' – alistaire

Смежные вопросы