Как изолировать отдельный элемент от очищенной веб-страницы в R

Я хочу использовать R для очистки этой страницы: (http://www.fifa.com/worldcup/archive/germany2006/results/matches/match=97410001/report.html) и другие, чтобы узнать бомбардиров и время.

Пока вот что у меня есть:

require(RCurl)
require(XML)

theURL <-"http://www.fifa.com/worldcup/archive/germany2006/results/matches/match=97410001/report.html"
webpage <- getURL(theURL, header=FALSE, verbose=TRUE) 
webpagecont <- readLines(tc <- textConnection(webpage)); close(tc)  

pagetree <- htmlTreeParse(webpagecont, error=function(...){}, useInternalNodes = TRUE)

и объект pagetree теперь содержит указатель на мой проанализированный html (я думаю). Я хочу:

<div class="cont")<ul>
<div class="bold medium">Goals scored</div>
        <li>Philipp LAHM (GER) 6', </li>
        <li>Paulo WANCHOPE (CRC) 12', </li>
        <li>Miroslav KLOSE (GER) 17', </li>
        <li>Miroslav KLOSE (GER) 61', </li>
        <li>Paulo WANCHOPE (CRC) 73', </li>
        <li>Torsten FRINGS (GER) 87'</li>
</ul></div>

Но теперь я не знаю, как их изолировать, и, честно говоря, xpathSApply и xpathApply сбивают меня с толку пчелок!

Итак, кто-нибудь знает, как сформулировать команду для извлечения элемента, содержащегося в тегах <div class="cont">?


person PaulHurleyuk    schedule 08.06.2010    source источник
comment
Будьте осторожны, делая подобные вещи ... В большинстве случаев такие организации, как ФИФА или ФИБА, НБА и т. Д., Не разрешают использование своих данных - просто заявите: их данные являются их собственностью! Так что в следующий раз предоставьте фиктивный HTML-код или просто укажите на какой-нибудь безобидный сайт! знак равно   -  person aL3xa    schedule 08.06.2010


Ответы (1)


Эти вопросы очень полезны при работе с веб-парсингом и XML в R:

  1. Скребок таблиц HTML в кадры данных R с использованием XML пакет
  2. Как преобразовать данные XML в data.frame?

Что касается вашего конкретного примера, хотя я не уверен, как вы хотите, чтобы результат выглядел, он получает "забитые голы" как вектор символов:

theURL <-"http://www.fifa.com/worldcup/archive/germany2006/results/matches/match=97410001/report.html"
fifa.doc <- htmlParse(theURL)
fifa <- xpathSApply(fifa.doc, "//*/div[@class='cont']", xmlValue)
goals.scored <- grep("Goals scored", fifa, value=TRUE)

Функция xpathSApply получает все значения, соответствующие заданным критериям, и возвращает их как вектор. Обратите внимание, как я ищу div с class = 'cont'. Использование значений класса часто является хорошим способом анализа HTML-документа, поскольку они являются хорошими маркерами.

Вы можете очистить это, как хотите:

> gsub("Goals scored", "", strsplit(goals.scored, ", ")[[1]])
[1] "Philipp LAHM (GER) 6'"    "Paulo WANCHOPE (CRC) 12'" "Miroslav KLOSE (GER) 17'" "Miroslav KLOSE (GER) 61'" "Paulo WANCHOPE (CRC) 73'"
[6] "Torsten FRINGS (GER) 87'"
person Shane    schedule 08.06.2010
comment
Довольно аккуратно, я давно искал что-то подобное, но в итоге остановился на Python! Теперь я могу запустить небольшой скрипт и заполнить набор данных! Прохладный! - person aL3xa; 08.06.2010