我試圖從網站上刮取一些數據。這就是我通常在Perl中所做的事情,但我真的很想讓自己脫離Perl。 (我不是在討論Perl,它是一個有價值的工具,但是我爲十多年後仍然與這門語言苦苦掙扎而感到痛心)。由於我的需求很簡單,性能對我來說很少是一個問題,所以我想轉移我的網站刮到R.我知道一些R,但我從來沒有使用RCurl或類似的圖書館。R:使用RCurl和postForm檢索數據
這個任務是刮取公開可用數據的數據庫。這個問題很複雜,我不知道如何傳遞參數,因爲我只是看着JS源代碼並試圖找出RCurl postForm請求中包含的內容。下面的代碼不會拋出任何明顯的錯誤,但它也不會返回任何有用的東西。
問:我做錯了什麼?
[編輯:以反映變化的建議,但尚未解析】
require(RCurl)
## -----------> Form:
## http://jamaserv.jama.or.jp/newdb/eng/index.html
## -----------> Result:
## http://jamaserv.jama.or.jp/newdb/eng/prod4/prod4TsMkEntry.html
#POST /newdb/eng/prod4/prod4TsMkEntry.html makerCd=5&additionBase=1&additionInterval=1&chkSelCnd3=0&car4Cd=100005&termFrom=201103&termTo=201203&prod4TsMkEntryForm%3AdoAction=Server&prod4TsMkEntryForm%2Feng%2Fprod4%2Fprod4TsMkEntry.html=prod4TsMkEntryForm
#POST /newdb/eng/prod4/prod4TsMkEntry.html?pass chkSelCnd3=0&prod4TsMkEntryForm%2Feng%2Fprod4%2Fprod4TsMkEntry.html=prod4TsMkEntryForm&makerCd=5&additionBase=1&termTo=201203&prod4TsMkEntryForm%3AdoAction=Server&additionInterval=1&termFrom=201103&car4Cd=100005
x <- postForm('http://jamaserv.jama.or.jp/newdb/eng/prod4/prod4TsMkEntry.html?pass',
chkSelCnd3 = '0',
'prod4TsMkEntryForm/eng/prod4/prod4TsMkEntry.html' = 'prod4TsMkEntryForm',
makerCd = '5',
additionBase = '1',
termTo = '201203',
'prod4TsMkEntryForm:doAction' = 'Server',
additionInterval = '1',
termFrom = '201103',
car4Cd = '100005',
.opts = curlOptions(
referer = 'http://jamaserv.jama.or.jp/newdb/eng/prod4/prod4TsMkEntry.html',
verbose = TRUE,
header = TRUE,
followLocation = TRUE,
useragent = 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13'
)
)
在使用瀏覽器的形式如下:
,以上的設置返回(一個單獨的頁面上)這樣的:
代碼....我們想要代碼!得到的代碼? –
@DWin不幸的是,我沒有接近工作的代碼。在我放棄了一個基於R的解決方案之後,我把它交給了兩個不同的Perl專家,他們用了很好的技巧,並在解決了這兩個問題之後解決了這個問題。所以現在它進入了「太難」的水桶。也許在將來。 – SlowLearner