2015-02-11 46 views
4

我对R相当陌生,在从福布斯网站提取数据时遇到问题。R中的URL问题

我的当前的功能是:

URL =

http://www.forbes.com/global2000/list/#page:1_sort:0_direction:asc_search:_filter:All%20industries_filter:All%20countries_filter:All%20states

数据= readHTMLTable(URL)

然而,当我改变页面#在url从1到2(或以任何其它数字),所拉出的数据与第1页中的数据相同。出于某种原因,R不会从正确的页面提取数据。如果您手动将链接粘贴到具有特定页面的浏览器中,则可以正常工作。

有没有人有一个想法,为什么发生这种情况?

谢谢!

+1

数据正在通过javascript加载,并且不在从服务器发送的页面的实际HTML中。如果你需要一个可以运行javascript的抓取方法,试试RSelenium包。 – MrFlick 2015-02-11 21:46:44

+0

太好了。我会尝试RSelenium软件包。谢谢! – 2015-02-12 18:23:26

回答

1

这似乎是由英镑符号代表的URL片段引起的问题。它本质上是在页面上创建一个锚点并指引浏览器跳转到该特定位置。

您可能会遇到此问题,因为可能不会创建readHTMLTable()以使用URL片段。看看你能否找到URL中不需要#的同一张表的版本。

这里有可能你正在经历揭示一些有用的链接: What is it when a link has a pound "#" sign in it

https://support.microsoft.com/kb/202261/en-us

如果我遇到其他任何有帮助的,我将在后续评论分享。

0

你可能需要做的是使用进行urlencode()方法R.

kdb.url <- "http://m1:5000/q.csv?select from data0 where folio0 = `KF" 
kdb.url <- URLencode(kdb.url) 
df <- read.csv(kdb.url, header=TRUE) 

你可能有元字符在您的网址了。 (我的空间和倒勾)

>kdb.url 
[1] "http://m1:5000/q.csv?select%20from%20data0%20where%20folio0%20=%20%60KF" 

他们想到了那些R家伙。