【问题标题】:Scrape data from HTML [closed]从 HTML 中抓取数据 [关闭]
【发布时间】:2015-01-30 16:13:42
【问题描述】:

这是我试图从中抓取的页面,http://www.footballlocks.com/nfl_point_spreads_week_1.shtml,我想最终得到一个包含 4 列的简单 data.frame,这样我就可以进行进一步的分析。我曾尝试使用 XML 包,但运气不佳。感谢您的帮助

week.1 <- readHTMLTable("http://www.footballlocks.com/nfl_point_spreads_week_1.shtml")
str(week.1) 

【问题讨论】:

  • 您到底尝试了什么? “运气不太好”到底是什么意思?你无法完成什么?现在听起来你只是在让别人为你写代码,而不是问一个特定的编程问题。
  • 你在找这个吗:week.1 footballlocks.com/nfl_point_spreads_week_1.shtml", which=1)
  • 我明白你为什么要在那个网站上苦苦挣扎。许多,许多,许多级别的嵌套表。最糟糕的。 @cory,你试过吗?我怀疑该数据框的内容是 OP 正在寻找的(footballlocks 只是一个制作得很糟糕的网站)
  • cory,我只是在寻找页面上的第一个表格,即 2014 年的第 1 周。而 MrFlick 我是 R 中数据抓取的新手,因此将不胜感激任何正确方向的帮助

标签: xml r dataframe scrape


【解决方案1】:

rvest 可以做到这一点。因此,您可以使用 XPath 查找所有 4 列表:

library(rvest)

url <- "http://www.footballlocks.com/nfl_point_spreads_week_1.shtml"

pg <- html(url)

tabs <- pg %>% html_nodes(xpath="//table[@cols='4']")

html_table(tabs[[1]], header=TRUE)

##    Date & Time        Favorite Spread     Underdog
## 1  9/4 8:35 ET      At Seattle   -5.0    Green Bay
## 2  9/7 1:00 ET     New Orleans   -3.0   At Atlanta
## 3  9/7 1:00 ET    At St. Louis   -3.0    Minnesota
## 4  9/7 1:00 ET   At Pittsburgh   -6.0    Cleveland
## 5  9/7 1:00 ET At Philadelphia  -10.0 Jacksonville
## 6  9/7 1:00 ET      At NY Jets   -6.5      Oakland
## 7  9/7 1:00 ET    At Baltimore   -1.0   Cincinnati
## 8  9/7 1:00 ET      At Chicago   -7.0      Buffalo
## 9  9/7 1:00 ET      At Houston   -3.0   Washington
## 10 9/7 1:00 ET  At Kansas City   -3.0    Tennessee
## 11 9/7 1:00 ET     New England   -4.0     At Miami
## 12 9/7 4:25 ET    At Tampa Bay   -4.5     Carolina
## 13 9/7 4:25 ET   San Francisco   -3.5    At Dallas
## 14 9/7 8:30 ET       At Denver   -8.5 Indianapolis

如果需要像老派一样踢它:

library(XML)

url <- "http://www.footballlocks.com/nfl_point_spreads_week_1.shtml"

doc <- htmlParse(url)

readHTMLTable(doc["//table[@cols='4']"][[1]])

(相同的输出)

【讨论】:

  • 你用的是什么版本的R?
  • 我用的是3.1.1,包不可用,有什么建议吗?
  • DESCRIPTION 文件为 rvest 表示 R (&gt;= 3.0.1)。你是怎么安装的?
  • 我也注意到了,我已经尝试了 install.packages("rvest") 以及在 CRAN 存储库中搜索它的手动方法,我还缺少什么吗?
  • 我也用XML-library 解决方案更新了答案
【解决方案2】:

Pinnacle Sports 有一个 API,如果您想要实时 NFL 赔率,您可以使用该 API。对于您的目的,也许比从该网页上抓取一周的赔率更好;它是足球线分析的常用来源。

【讨论】:

    猜你喜欢
    • 2013-06-18
    • 2019-02-26
    • 1970-01-01
    • 2011-03-10
    • 1970-01-01
    • 2011-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多