是的,这只是另一个“如何刮”的问题。很抱歉,我已经阅读了之前的答案以及rvest
的手册。
我正在为我的家庭作业进行网络抓取(所以我不打算将数据用于任何商业问题)。这个想法是为了表明团队的平均技能会影响个人技能。我正在尝试使用来自HLTV.org的CS:GO数据。
有关信息,请访问http://www.hltv.org/?pageid=173&playerid=9216
我需要两个表:Keystats(仅限数据)和Teammates(数据和URL)。我尝试使用SelectorGadget生成的CSS选择器,我也尝试分析网页的源代码。我失败了。我正在做以下事情:
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选择器?
答案 0 :(得分: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