如何使用r从该特定网站上抓取数据?

时间:2019-12-11 16:23:42

标签: r rvest

我想从该网站下载数据。

http://asphaltoilmarket.com/index.php/state-index-tracker/

但是请求不断超时。

我已经尝试过以下方法,但是它总是超时。

library(rvest)
IndexData <- read_html("http://asphaltoilmarket.com/index.php/state-index-tracker/")
library(RCurl)
IndexData <- getURL("http://asphaltoilmarket.com/index.php/state-index-tracker/")
library(httr)
library(XML)
IndexData <- htmlParse(GET(url))

此网站可以在浏览器中正常打开,我可以使用excel和alteryx下载此数据。

1 个答案:

答案 0 :(得分:2)

如果“获取数据”是指“刮擦该页面上的表格”,那么您只需要走得更远。

首先,您需要检查网站robots.txt,以查看是否允许抓取。在这种情况下,没有提及刮刮操作。

您已经有了html的站点,您只需要找到所需的CSS选择器即可。您可以使用开发人员工具或类似selector gadget之类的东西来查找表并获取其CSS选择器。

使用html之后,使用html_node()提取您感兴趣的节点,然后使用html_table()提取表。

library(magrittr)
library(rvest)

html <-read_html("http://asphaltoilmarket.com/index.php/state-index-tracker/")

html %>% 
  html_node("#tablepress-5") %>% 
  html_table()
#>             State     Jan     Feb     Mar     Apr     May     Jun     Jul
#> 1         Alabama $496.27 $486.86 $482.16 $498.62 $517.44 $529.20 $536.26
#> 2          Alaska $513.33 $513.33 $513.33 $513.33 $513.33 $525.84 $535.00
#> 3         Arizona $476.00 $469.00 $466.00 $463.00 $470.00 $478.00 $480.00
#> 4        Arkansas $503.50 $500.50 $494.00 $503.00 $516.50 $521.20 $525.00
#> 5      California $305.80 $321.00 $346.20 $365.50 $390.10 $380.50 $345.50
#> 6        Colorado $228.10 $301.45 $320.58 $354.12 $348.70 $277.55 $297.23
#> 7     Connecticut $495.00 $495.00 $495.00 $495.00 $502.50 $502.50 $500.56
#> 8        Delaware $493.33 $458.33 $481.67 $496.67 $513.33 $510.00 $498.33
#> 9         Florida $507.30 $484.32 $487.12 $503.38 $518.52 $517.68 $514.03
#> 10        Georgia $515.00 $503.00 $503.00 $517.00 $534.00 $545.00 $550.00