如何抓取此squawka页面?

彼得·韦伯

我正在尝试提取以下信息:

在页面上

http://epl.squawka.com/stoke-city-vs-arsenal/01-03-2014/english-barclays-premier-league/matches

按下红色的“完整统计信息”按钮,将打开一个菜单,该菜单包括(左侧)“交叉”按钮。这将在屏幕的右侧打开带有19个箭头的足球场的图像,这些是斯托克在阿斯托纳(Stoke-Arsenal)比赛中的传球。它们用颜色编码,红色=未完成,绿色=已完成,黄色=密钥通过。当您单击箭头时,它将告诉您谁给了通行证以及比赛的进行时间。同样,箭头表示玩家传球时站立的位置以及玩家被传给的位置。

我希望能够抓取此页面,以便获得带有列的表格:

球队; 发件人姓名;发件人位置;接收者的位置;分钟; 箭头的颜色

这是斯托克制造的一组传球,我也想为阿森纳自动重复此操作(因此,在上表中的“俱乐部”列)。

尽管我过去曾经抓过网页,但是这些都是静态的相当简单的页面,而我对于如何从该页面抓取信息完全感到傻眼。对于如何抓取我刚刚描述的数据,我将非常感激。我精通R,所以我特别喜欢可以帮助我在R中实现这一目标的代码,但是我也非常感谢使用其他语言或软件的帮助。

谢谢彼得

杰达里森

彼得表示,您可以使用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="Failed">
    <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 Failed 73.1,87.1 97.9,49.1
event5        311    6   33    393   31 Failed 92.3,13.1 93.0,31.0
event1        376    8   57    537   31 Failed  97.7,6.1 96.7,16.4
event6        311   13   50    830   31 Failed  99.5,0.5 94.9,42.6
event11       311   14   11    851   31 Failed  99.5,0.5 93.1,51.0
event7        311   17   41   1061   31 Failed 99.5,99.5 92.6,50.1

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何抓取此squawka页面?

来自分类Dev

如何抓取页面标题?

来自分类Dev

如何分别抓取此代码?

来自分类Dev

我该如何使用Powershell获取网站的网址并查看此页面的所有链接(抓取)

来自分类Dev

如何从aspx页面抓取图像?

来自分类Dev

登录后如何抓取页面

来自分类Dev

如何从 Squawka 中获取这些球员评分

来自分类Dev

如何使用BeautifulSoup和Python抓取页面?

来自分类Dev

如何使用Node.js抓取页面

来自分类Dev

如何使用Puppeteer抓取Reddit页面?

来自分类Dev

如何抓取页面的动态URL?

来自分类Dev

如何使用Node.js抓取页面

来自分类Dev

如何与子页面并行抓取网页?

来自分类Dev

如何使用 Splash 抓取 JS 页面?

来自分类Dev

如何在 Capybara 中重新抓取页面?

来自分类Dev

如何在抓取页面时形成循环?

来自分类Dev

如何清理和整理此已抓取数据列表?

来自分类Dev

如何实现此异步nodejs Web抓取程序的逻辑?

来自分类Dev

如何清理和整理此已抓取数据列表?

来自分类Dev

Beautiful Soup网站抓取:我如何抓取此特定的html结构

来自分类Dev

抓取,抓取链接,然后抓取页面

来自分类Dev

如何从Devtool文档页面读取此表?

来自分类Dev

如何使用 Jsoup 登录此特定页面?

来自分类Dev

如何使用 ListView 构建此登录页面

来自分类Dev

网络抓取此方案

来自分类Dev

如何使用UIWebView自动抓取需要身份验证的页面?

来自分类Dev

如何使用Viewstate参数抓取页面请求?

来自分类Dev

如何使用Scrapy抓取网站所有页面上的链接

来自分类Dev

如何使用Selenium或Scrapy抓取AJAX页面参数中的信息?