Веб-скрапинг и парсинг HTML в R

Я пытаюсь разобрать эту веб-страницу в кадр данных, но продолжаю застревать, используя пакет XML, которому говорят, что это не XML.

Я хотел бы взять приведенный ниже текст и преобразовать его в таблицу/data.frame - как проще всего это сделать после того, как я взял текст URL-адреса и htmlParsed его?

doc = getURL("http://m.racingpost.com/card/blocks.sd?race_id=first&r_date=2015-03-28&tab=card&view=meetings&blocks=cards-list&_=1427439140572") doc = htmlParse(doc, asText =Т)


person Tammboy    schedule 28.03.2015    source источник


Ответы (1)


URL-адрес возвращает JSON. Вы можете разобрать его, используя несколько пакетов R RJSONIO, rjson и jsonlite:

library(jsonlite)
appURL <- "http://m.racingpost.com/card/blocks.sd?race_id=first&r_date=2015-03-28&tab=card&view=meetings&blocks=cards-list&_=1427439140572"
appDATA <- fromJSON(appURL)
appITEMS <- appDATA[["cards-list"]][["items"]]
> appITEMS$c1083
$abandonedCount
[1] 0

$crsName
[1] "Chelmsford (AW)"

$crsAbbr
[1] "Cfd"

$isForeign
[1] ""

$races
id                                                           title distance cls crsId time       date
1 620151        Buy Online At chelmsfordcityracecourse.com Maiden Stakes       1m   4  1083 2:20 2015-03-28
2 620152 Dubai World Cup toteplacepot Today Maiden Stakes (Plus 10 Race)       5f   4  1083 2:55 2015-03-28
3 620153                            &pound;1 Million totescoop6 Handicap       5f   2  1083 3:30 2015-03-28
4 620154                                toteexacta Pick The 1,2 Handicap       6f   4  1083 4:05 2015-03-28
5 620155               totetrifecta Pick The 1,2,3 Handicap (Bobis Race)       1m   3  1083 4:40 2015-03-28
6 620156                                               totepool Handicap     1m2f   2  1083 5:15 2015-03-28
7 620157                                  Madness Live 3rd June Handicap     1m2f   4  1083 5:50 2015-03-28
timestamp raceGroup hCount abandoned videoId    going offers
1 1427552400                8             57049 Standard   NULL
2 1427554500                5             57050 Standard   NULL
3 1427556600  Handicap     12             57051 Standard   NULL
4 1427558700  Handicap      7             57052 Standard   NULL
5 1427560800  Handicap      8             57053 Standard   NULL
6 1427562900  Handicap      7             57054 Standard   NULL
7 1427565000  Handicap      6             57055 Standard   NULL

Данные не возвращаются в табличном формате, но вы можете работать с отдельными «элементами» в соответствии со своими потребностями. Пакет jsonlite также возвращает соответствующие табличные структуры.

person jdharrison    schedule 28.03.2015
comment
Это выглядит великолепно, но когда я это делаю, я получаю эту ошибку: - person Tammboy; 29.03.2015
comment
Ошибка в feed_push_parser(buf): лексическая ошибка: недопустимый символ в тексте json. ‹html›‹head›‹title›Запрос Reje (прямо здесь) ------^ - person Tammboy; 29.03.2015
comment
Когда я установил пакет curl, он сказал мне, что это для более ранней версии r - в этом разница? - person Tammboy; 29.03.2015
comment
Удалось исправить это, используя getURL, чтобы сначала ввести текст json - похоже, это решило - спасибо - person Tammboy; 29.03.2015