Web Scraping BoardGameGeek с RVest - PullRequest
       8

Web Scraping BoardGameGeek с RVest

1 голос
/ 06 апреля 2020

Я в значительной степени новичок в веб-поиске с помощью rvest ... и действительно плохо знаком с большинством всего, кроме кодирования Qlik.

Я пытаюсь очистить данные, найденные у гена настольной игры, см. Ссылку ниже. Использование inspect, конечно, кажется возможным, но пока rvest не находит теги. Сначала я подумал, что мне нужно go пройти через весь процесс javascript с использованием V8 (javascript вызывается вверху html), но когда я просто использую html_text для всего документа, мне нужна вся информация там

* ОБНОВЛЕНИЕ: Похоже, что в JSON. Я использовал комбинацию notepad ++ и веб-инструмента, чтобы очистить его и загрузить в R. Какие-либо рекомендации по обучающим программам / демонстрациям для того, как сделать это систематически? У меня есть все ссылки, которые мне нужны, чтобы через l oop пройти, но я не уверен, как go из вывода html_text получить чистый ввод JSON через код. *

Я привел примеры ниже, но мне нужно разобраться с большинством доступных элементов данных, поэтому я не ищу код для копирования и вставки, а скорее лучший способ поиска. См. Ниже.

Ссылка: https://boardgamegeek.com/boardgame/63888/innovation

HTML Пример Я пытаюсь получить от. Span ничего не возвращает с html_nodes, так что я даже не смог начать там.

<span ng-if="min > 0" class="ng-binding ng-scope">45</span>

ИЛИ

<a title="Civilization" ng-href="/boardgamecategory/1015/civilization" class="ng-binding" href="/boardgamecategory/1015/civilization">Civilization</a>

Javscript разделы вверху страницы примерно так: около 8 из них:

<script type="text/javascript" src="https://cf.geekdo-static.com/static/geekcollection_master2_5e84926ab7e90.js"></script>

Когда я просто использую html_text для всего объекта, я вижу все элементы, которые я ищу, например:

\"minplaytime\":\"30\" OR {\"name\":\"Deck, Bag, and Pool Building\"

Я предполагаю, что это JSON? Есть ли способ проанализировать вывод html_text или другой метод? Проще ли просто набрать sh javascript вверху страницы, используя V8? Есть ли простое руководство для этого?

1 Ответ

0 голосов
/ 06 апреля 2020

Знаете ли вы, что BGG имеет API? Документацию можно найти здесь: URL

Код будет предоставлен в виде XML файла. Таким образом, для вашего примера вы можете получить идентификатор вашей игры - ваш пример 63888 (это в URL). Таким образом, файл xml можно найти по адресу: https://www.boardgamegeek.com/xmlapi2/thing?id=63888

Вы можете прочитать информацию с помощью этого кода:

library(dplyr)
library(rvest)

game_data <- read_xml("https://www.boardgamegeek.com/xmlapi2/thing?id=63888")
game_data %>% 
  html_nodes("name[type=primary]") %>% 
  html_attr("value") %>% 
  as.character()
#> [1] "Innovation"

Проверяя xml В файле вы можете выбрать, какой узел вы хотите экспортировать.

Создан в 2020-04-06 пакетом представить (v0.3.0)

...