Как я могу очистить данные с веб-сайта во фрейме с помощью R?

Следующая ссылка содержит результаты парижского марафона: http://www.schneiderelectricparismarathon.com/us/the-race/results/results-marathon. Я хочу очистить эти результаты, но информация находится внутри фрейма. Я знаю основы парсинга с помощью Rvest и Rselenium, но понятия не имею, как получить данные в таком фрейме. Чтобы получить представление, одна из вещей, которые я пробовал, была:

url = "http://www.schneiderelectricparismarathon.com/us/the-race/results/results-marathon"
site = read_html(url)
ParisResults = site %>% html_node("iframe") %>% html_table()
ParisResults = as.data.frame(ParisResults)

Любая помощь в решении этой проблемы будет очень кстати!


person Merijn    schedule 23.05.2016    source источник


Ответы (1)


Результаты загружаются с помощью ajax со следующего URL-адреса:

url="http://www.aso.fr/massevents/resultats/ajax.php?v=1460995792&course=mar16&langue=us&version=3&action=search"
  table <- url %>%
    read_html(encoding="UTF-8") %>%
    html_nodes(xpath='//table[@class="footable"]') %>%
    html_table()

PS: я не знаю, что такое ajax, и я просто знаю основы rvest.

РЕДАКТИРОВАТЬ: чтобы ответить на вопрос в комментарии: у меня нет большого опыта в очистке веб-страниц. Если вы используете только самые простые приемы работы с rvest или xml, вам придется немного больше разбираться в веб-сайте, а каждый сайт имеет свою собственную структуру. Вот как я это сделал:

  1. Как вы видите, в исходном коде вы не видите никаких результатов, потому что они находятся в iframe, а при проверке кода вы можете увидеть после «РЕЗУЛЬТАТЫ 2016 ИЗДАНИЯ»:

    class="iframe-xdm iframe-resultats" data-href="http://www.aso.fr/massevents/resultats/index.php?langue=us&course=mar16&version=3"

  2. Теперь вы можете использовать этот URL напрямую: http://www.aso.fr/massevents/resultats/index.php?langue=us&course=mar16&version=2

  3. Но вы все еще можете получить результаты. Затем вы можете использовать инструменты разработчика Chrome > Сеть > XHR. При обновлении страницы вы можете увидеть, что данные загружаются с этого URL-адреса (когда вы выбираете категорию «Мужчины»): http://www.aso.fr/massevents/resultats/ajax.php?course=mar16&langue=us&version=2&action=search&fields%5Bsex%5D=F&limiter=&order=

  4. Теперь вы можете получить результат!

  5. А если вам нужна вторая страница и т. д., вы можете нажать на номер страницы, а затем использовать инструмент разработчика, чтобы посмотреть, что произойдет!

person Xiaoshi    schedule 23.05.2016
comment
Спасибо, это решает мою проблему! Для будущих проблем, можете ли вы сказать мне, как вам удалось получить этот URL-адрес? Я не смог найти его в исходном коде. - person Merijn; 24.05.2016