2015-02-11 44 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傢伙。