有许多NBA幻想预测我想以更精简的方式进行。目前我在google sheet中使用了importhtml函数和简单的古老cut'n'paste。
我经常使用R来从互联网上抓取其他数据,但是,我无法让这些表格刮掉。我遇到问题的表位于三个不同的地址(每页1个表),它们是:
1)http://www.sportsline.com/nba/player-projections/player-stats/all-players/
2)https://swishanalytics.com/optimus/nba/daily-fantasy-projections
3)http://www.sportingcharts.com/nba/dfs-projections/
对于我所有其他的抓取活动,我使用包rvest和xml。按照相同的过程,我尝试了下面列出的两种方法,这些方法都会显示输出结果。我确定这与网站上表格的格式有关,但是我找不到能帮助我的东西。
方法1
library(XML)
projections1 <- readHTMLTable("http://www.sportsline.com/nba/player-projections/player-stats/all-players/")
projections2 <- readHTMLTable("https://swishanalytics.com/optimus/nba/daily-fantasy-projections")
projections3 <- readHTMLTable("http://www.sportingcharts.com/nba/dfs-projections/")
输出
projections1
named list()
projections2
named list()
Warning message:
XML content does not seem to be XML: 'https://swishanalytics.com/optimus/nba/daily-fantasy-projections'
projections3 - 我得到了表格的标题,但没有得到表格的内容。
方法2
library(rvest)
URL <- "http://www.sportsline.com/nba/player-projections/player-stats/all-players/"
projections1 <- URL %>%
read_html %>%
html_nodes("table") %>%
html_table(trim=TRUE,fill=TRUE)
URL <- "https://swishanalytics.com/optimus/nba/daily-fantasy-projections"
projections2 <- URL %>%
read_html %>%
html_nodes("table") %>%
html_table(trim=TRUE,fill=TRUE)
URL <- "http://www.sportingcharts.com/nba/dfs-projections/"
projections3 <- URL %>%
read_html %>%
html_nodes("table") %>%
html_table(trim=TRUE,fill=TRUE)
输出
projections1
list()
projections2 - 我得到了表格的标题,但没有得到表格的内容。
projections3 - 我得到了表格的标题,但没有得到表格的内容。
如果有人能指出我正确的方向,我们将不胜感激。
答案 0 :(得分:0)
该表的内容是由javascript生成的,因此readHTMLTable
和read_html
找不到任何内容,您可以在下面找到该表
projection1:link
import requests
url = 'http://www.sportsline.com/sportsline-web/service/v1/playerProjections?league=nba&position=all-players&sourceType=FD&game=&page=PS&offset=0&max=25&orderField=&optimal=false&release2Ver=true&auth=3'
r = requests.get(url)
print r.json()
projections2:view-source:https://swishanalytics.com/optimus/nba/daily-fantasy-projections第1181行
import requests
url = 'https://swishanalytics.com/optimus/nba/daily-fantasy-projections'
r = requests.get(url)
text = r.content
print eval(text.split('this.players = ')[1].split(';')[0])
projections3:view-source Line 918