烦恼如何从该网站上抓取数据(使用R)

彼得·韦伯

我正在尝试使用R从以下站点抓取数据:http : //www.soccer24.com/kosovo/superliga/results/#

我可以执行以下操作:

library(rvest)
doc <- html("http://www.soccer24.com/kosovo/superliga/results/")

但是却对如何轴向获取数据感到困惑。这是因为网站上的实际数据似乎是由Javascript生成的。我能做的是

html_text(doc)

但这会给文本带来一长串奇怪的文字(确实包含数据,但散布着奇数代码,而且我不清楚如何解析它。

我要提取的是所有比赛的比赛数据(日期,时间,球队,结果)。此站点不需要其他数据。

任何人都可以提供一些有关如何从该站点提取数据的提示吗?

杰达里森

使用Seleniumphantomjs

library(RSelenium)
pJS <- phantom()
remDr <- remoteDriver(browserName = "phantomjs")
appURL <- "http://www.soccer24.com/kosovo/superliga/results/#"
remDr$open()
remDr$navigate(appURL)

如果您想按更多数据按钮直到不可见(假定所有匹配项都显示):

webElem <- remDr$findElement("css", "#tournament-page-results-more a")
while(webElem$isElementDisplayed()[[1]]){
  webElem$clickElement()
  Sys.sleep(5)
  webElem <- remDr$findElement("css", "#tournament-page-results-more a")
}
doc <- htmlParse(remDr$getPageSource()[[1]])

删除多余的回合数据并XML::readHTMLTable简化使用

# remove unwanted rounds html. Sometimes there are end of season extra games.
# These are presented in a seperate table.
invisible(doc["//table/*/tr[@class='event_round']", fun = removeNodes])
appData <- readHTMLTable(doc, which = seq(length(doc["//table"])-1), stringsAsFactors = FALSE, trim = TRUE)
if(!is.data.frame(appData)){appData <- do.call(rbind, appData)}
row.names(appData) <- NULL
names(appData) <- c("blank", "Date", "hteam", "ateam", "score")
pJS$stop()
> head(appData)
blank         Date           hteam            ateam score
1       01.04. 18:00     Ferronikeli          Ferizaj 4 : 0
2       01.04. 18:00          Istogu         Hajvalia 2 : 1
3       01.04. 18:00 Kosova Vushtrri Trepca Mitrovice 1 : 0
4       01.04. 18:00       Prishtina          Drenica 3 : 0
5       31.03. 18:00       Besa Peje            Drita 1 : 0
6       31.03. 18:00       Trepca 89       Vellaznimi 2 : 0

> tail(appData)
    blank         Date            hteam     ateam score
115       17.08. 22:00        Besa Peje Trepca 89 3 : 3
116       17.08. 22:00      Ferronikeli  Hajvalia 2 : 5
117       17.08. 22:00 Trepca Mitrovice   Ferizaj 1 : 0
118       17.08. 22:00       Vellaznimi   Drenica 2 : 1
119       16.08. 22:00  Kosova Vushtrri     Drita 0 : 1
120       16.08. 22:00        Prishtina    Istogu 2 : 1

根据需要进行进一步的格式化。

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用节点从网站上抓取数据

如何从网站上抓取数据?

如何从该网站上抓取 JSON 文件?

如何使用异常表格从选举网站上抓取数据

如何使用VBA从Bloomberg网站上抓取数据

如何使用Flutter从网站上抓取图像?

使用R在一天之内使用4个网址从网站上抓取数据

如何从网站上抓取数据并以 R 中的指定格式写入 csv?

使用R(rvest)从金融网站上进行网页抓取数据

如何使用 Scrapy 在可以选择加载更多帖子的网站上抓取数据?

如何使用python中的BeautifulSoup库从具有“查看更多”选项的网站上抓取数据

当 URL 不变时,如何使用过滤器从网站上抓取数据?

如何从网站上抓取描述

如何从物业税网站上抓取数据

链接到事件点击后如何从网站上抓取数据?

如何从加载缓慢的网站上抓取表数据

如何从需要验证代码的网站上抓取数据?

如何从网站上抓取所有数据?

如何从物业税网站上抓取数据

使用 Beautiful Soup 和 Pandas 从网站上抓取数据

无法使用 BeautifulSoup 从网站上抓取所有数据

无法在Fitch Ratings网站上使用R进行抓取

如何使用Beautifulsoup从网站上抓取产品价格?

如何使用硒从网站上抓取一些链接

如何使用BeautifulSoup从eCom网站上抓取<li>?

如何使用 VBA 从网站上抓取选项值

如何从不使用POST的网站上抓取信息

如何使用 php 和 mysql 从网站上抓取日期并将该日期存储在数据库中?

如何使用节点从网站抓取数据