Хобрук: Ваш путь к мастерству в программировании

r rvest webscraping hltv

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

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

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

Мне нужны две таблицы: Keystats (только данные) и Teammates (данные и 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?


  • Разрешает ли этот сайт автоматический парсинг? 14.02.2017
  • Исходя из будущего, чтобы сказать, что: нет, этот сайт не поддерживает парсинг. Я связался с ними по электронной почте, и они сказали, что это, конечно, никоим образом не приемлемо для очистки HLTV, и при необходимости мы отправим вашу контактную информацию в юридический отдел. 26.04.2020
  • Прекрасный пример полезного комментария, большое спасибо! 27.04.2020

Ответы:


1

Если вы посмотрите на исходный код, эти таблицы не являются таблицами 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
14.02.2017
  • Большое спасибо, что помогли мне во второй раз. В прошлый раз я попробовал забавное руководство для rvest, которое вы посоветовали. Подскажите, пожалуйста, как мне сохранить URL-адреса для таблицы Teammates? 15.02.2017
  • Они относительны, поэтому вам нужно вставить их в базовый URL, но h %>% html_nodes('.covSmallHeadline img ~ a') %>% html_attr('href') 15.02.2017
  • Код мне кажется, что он не работает. {xml_nodeset (0)} 06.10.2018
  • @Nettle. Веб-сайт изменился, поэтому теперь потребуется другой подход. 06.10.2018
  • Новые материалы

    Мой процесс подачи заявки в Школе программного обеспечения и дизайна Тьюринга
    Мой последний пост на Medium был в конце августа, и в нем я пообещал написать еще раз, рассказывая историю моего процесса подачи заявки в Школу программного обеспечения и дизайна Тьюринга ...

    Генерация ваших собственных удивительных QR-кодов с использованием Python
    QR-код (код быстрого ответа) — это разновидность матричных штрих-кодов (или двумерных штрих-кодов), изобретенных в 1994 году японской автомобильной компанией Denso Wave . Штрих-код —..

    Прогресс в технологии Трансформеров часть 3
    Многомасштабный управляющий сигнальный преобразователь для бесфазного синтеза движения (arXiv) Автор: Линтао Ван , Кун Ху , Лей Бай , Юй Дин , Ваньли Оуян , Чжиюн Ван . Аннотация:..

    Представляем поддержку компонентов Vue.js. Мгновенный HMR и многое другое.
    Хотя у FuseBox уже был плагин Vue, он был базовым и не имел многих функций, которые делали работу с Vue.js такой приятной. Однако с этим выпуском мы рады сообщить, что в FuseBox..

    Приключения в Javascript, часть 1
    Я продолжаю думать о том, чтобы писать больше, но чем больше я думаю об этом, тем меньше я это делаю. Итак, сегодня я перестал думать и начал писать. Отсюда можно только спускаться… В..

    Понимание дженериков в TypeScript: подробное руководство
    Введение TypeScript, строго типизированный надмножество JavaScript, хорошо известен своей способностью улучшать масштабируемость, удобочитаемость и ремонтопригодность приложений. Одной из..

    Учебные заметки JavaScript Object Oriented Labs
    Вот моя седьмая неделя обучения программированию. После ruby ​​и его фреймворка rails я начал изучать самый популярный язык интерфейса — javascript. В отличие от ruby, javascript — это более..