【问题标题】:Web scraping and parsing HTML in R网页抓取和解析 R 中的 HTML
【发布时间】:2015-03-28 08:11:21
【问题描述】:

我正在尝试将此网页解析为数据框,但使用被告知它不是 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=T)

【问题讨论】:

    标签: xml r web-scraping rcurl httr


    【解决方案1】:

    URL 正在返回 JSON。你可以使用多个R包RJSONIOrjsonjsonlite来解析它:

    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 包还有助于返回适当的表格结构。

    【讨论】:

    • 看起来不错,但是当我这样做时,我得到了这个错误:
    • feed_push_parser(buf) 中的错误:词法错误:json 文本中的字符无效。 请求拒绝(就在这里)------^
    • 当我安装 curl 包时,它告诉我它适用于早期版本的 r - 这有区别吗?
    • 设法通过使用 getURL 首先引入 json 文本来解决这个问题 - 似乎解决了 - 谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-28
    • 2021-07-17
    • 2018-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多