从HTML网站的HTML表格中刮取数据是很酷且容易的。但是,如果网站没有用html编写,并且需要浏览器显示相关信息,我该如何执行此任务如果它是一个asp网站或数据不在代码中,但通过java代码进来?用R刮非html网站?
喜欢的话就在这里:http://www.bwea.com/ukwed/construction.asp。
使用VBA Excel的一个可以写,打开一个功能,IE会调用网站,然后基本上复制和粘贴网站的内容。有没有机会做类似于R的事情?
从HTML网站的HTML表格中刮取数据是很酷且容易的。但是,如果网站没有用html编写,并且需要浏览器显示相关信息,我该如何执行此任务如果它是一个asp网站或数据不在代码中,但通过java代码进来?用R刮非html网站?
喜欢的话就在这里:http://www.bwea.com/ukwed/construction.asp。
使用VBA Excel的一个可以写,打开一个功能,IE会调用网站,然后基本上复制和粘贴网站的内容。有没有机会做类似于R的事情?
托马斯评论道,该网站只提供HTML。有些网站使用JavaScript通过AJAX调用获取值并将它们动态插入到文档中 - 这些将不会通过简单的抓取工作。这些技巧就是使用JavaScript调试器来查看AJAX调用的内容,并从请求和响应中对它们进行逆向工程。
最难的事情将是Java小应用程序驱动的网站,但幸运的是这是罕见的。这些可能通过任何网络机制获取他们的数据,并且您必须通过检查网络流量来反向设计所有这些数据。
即使IE/VBA会失败,如果它的Java小程序,我想。
此外,不要混淆Java和JavaScript。
我认为当他在同一句话中提到ASP和Java时,他指的是JSP或Java服务器页面,而不是Javascript。 – adamleerich
这是正常的HTML,与具有刮数据清理后的相关联的正常麻烦。
下面的伎俩:
readHTMLTable
阅读的页面中包XML
代码:
x <- readHTMLTable("http://www.bwea.com/ukwed/construction.asp",
as.data.frame=TRUE, stringsAsFactors=FALSE)
dat <- x[[5]]
names(dat) <- unname(unlist(dat[1, ]))
得到的数据:
dat <- dat[-1, ]
'data.frame': 39 obs. of 10 variables:
$ Date : chr "September 2011" "August 2011" "August 2011" "August 2011" ...
$ Wind farm : chr "Baillie Wind farm - Bardnaheigh Farm" "Mains of Hatton" "Coultas Farm" "White Mill (Coldham ext)" ...
$ Location : chr "Highland" "Aberdeenshire" "Nottinghamshire" "Cambridgeshire" ...
$ Power(MW) : chr "2.5" "0.8" "0.33" "2" ...
$ Turbines : chr "21" "3" "1" "7" ...
$ MW Capacity : chr "52.5" "2.4" "0.33" "14" ...
$ Annual homes equiv*.: chr "29355" "1342" "185" "7828" ...
$ Developer : chr "Baillie" "Eco2" "" "COOP" ...
$ Latitude : chr "58 02 52N" "57 28 11N" "53 04 33N" "52 35 47N" ...
$ Longitude : chr "04 07 40W" "02 30 32W" "01 18 16W" "00 07 41E" ...
它仍然正在传送HTML,所以从客户的角度来看,不应该有静态和动态创建的页面之间的任何差别。 – Thomas
这个问题的前提并不是事实。它需要被编辑。 – adamleerich