您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何抓取此squawka页面?

如何抓取此squawka页面?

彼得表示,您可以使用Selenium做到这一点。我还喜欢使用出色的选择器程序包。 其想法是与网站进行短暂交互,然后在其他地方进行其余操作。squawkData应该包含所需的一切。

# RSelenium::startServer() # if needed
require(RSelenium)
remDr <- remoteDriver()
remDr$open()
remDr$setImplicitWaitTimeout(3000)
remDr$navigate("http://epl.squawka.com/stoke-city-vs-arsenal/01-03-2014/english-barclays-premier-league/matches")
squawkData <- remDr$executeScript("return new XMLSerializer().serializeToString(squawkaDp.xml);", list())
require(selectr)
example <- querySelectorAll(xmlParse(squawkData[[1]]), "crosses time_slice")
example[[1]]


<time_slice name="0 - 5" id="1">
  <event player_id="531" mins="4" secs="39" minsec="279" team="44" type="@R_301_1455@">
    <start>73.1,87.1</start>
    <end>97.9,49.1</end>
  </event>
</time_slice>

免责声明我是RSelenium软件包的作者。可以在RSelenium基础知识RSelenium:Testing Shiny应用程序中查看有关操作的基本信息

使用选择器可以轻松访问更多信息:

> xmlValue(querySelectorAll(xmlParse(squawkData[[1]]), "players #531 name")[[1]])
[1] "Charlie Adam"

> xmlValue(querySelectorAll(xmlParse(squawkData[[1]]), "game team#44 long_name")[[1]])
[1] "Stoke City"

更新: 要将示例处理为数据框,您可以执行以下操作

out <- lapply(example, function(x){
# handle each event
  if(length(x['event']) > 0){
    res <- lapply(x['event'], function(y){
      matchAttrs <- as.list(xmlAttrs(y))
      matchAttrs$start <- xmlValue(y['start']$start)
      matchAttrs$end <- xmlValue(y['end']$end)
      matchAttrs
    })
    return(do.call(rbind.data.frame, res))
  }
}
)

> head(do.call(rbind, out))
        player_id mins secs minsec team   type     start       end
event         531    4   39    279   44 @R_301_1455@ 73.1,87.1 97.9,49.1
event5        311    6   33    393   31 @R_301_1455@ 92.3,13.1 93.0,31.0
event1        376    8   57    537   31 @R_301_1455@  97.7,6.1 96.7,16.4
event6        311   13   50    830   31 @R_301_1455@  99.5,0.5 94.9,42.6
event11       311   14   11    851   31 @R_301_1455@  99.5,0.5 93.1,51.0
event7        311   17   41   1061   31 @R_301_1455@ 99.5,99.5 92.6,50.1
其他 2022/1/1 18:31:51 有490人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶