我试图从网站上刮取一些数据。这就是我通常在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