2012-04-18 66 views
1

我有一个像this one这样的链接,我想使用RCurl从它提取数据,在此之前有一个免责声明页面,我需要在我的浏览器中单击它然后才能评估数据。以前我用下面的脚本,这是从here,以“搭桥”的免责声明页并访问使用RCurl数据:使用RCurl绕过“免责声明页面”,然后做网络报废

pagesource <- getURL(url,.opts=curlOptions(followlocation=TRUE,cookiefile="nosuchfile")) 
doc <- htmlParse(pagesource) 

它的工作原理之前,但在最近几天也没有长的作品。其实我对代码的做法并没有太多的想法,我想知道是否必须改变curlOptions中的内容,或者重新编写整段代码?

谢谢。

+0

这是您尝试访问的实际网站吗?我认为解决方案很大程度上取决于站点。 – 2012-04-18 16:25:05

+0

@Jeff是的,那是我想要访问的页面之一 – lokheart 2012-04-18 16:49:11

回答

1

正如我在我的评论中提到的那样,您的问题的解决方案完全取决于“免责声明页面”的实施。它看起来像以前的解决方案使用更详细定义的cURL选项here。基本上,它指示cURL要做的是提供一个假的Cookie文件(名为“nosuchfile”),然后遵循您尝试访问的网站给出的标题重定向。显然,该网站的设置方式是,如果访问者声称没有正确的Cookie,则会立即将访问者重定向到免责声明页面。

你没有碰巧在你的工作目录中创建一个名为“nosuchfile”的文件,是吗?否则,听起来目标网站改变了其免责声明页面的运作方式。如果是这种情况,除非我们拥有您试图访问的实际页面进行诊断,否则我们无法提供任何帮助。

在你引用你的问题的例子中,他们使用Javascript来移动过去的免责声明,这可能很难过去。

对于你提到的例子,但是......

  1. 在Chrome(或Firefox使用Firebug)打开它
  2. 右键单击页面中的一些空白区域,然后选择“检查元素”
  3. 单击网络选项卡
  4. 如果有内容,请单击底部的“清除”按钮清空页面。
  5. 接受许可协议
  6. 请注意所有通过网络的流量。就我而言,最重要的结果是有趣的。如果您点击它,您可以预览它以确认它确实是一个HTML文档。如果您点击该项目下的“标题”标签,它会显示“请求URL”。在我的情况下,这是:http://bank.hangseng.com/1/PA_1_1_P1/ComSvlet_MiniSite_eng_gif?app=eINVCFundPriceDividend&pri_fund_code=U42360&data_selection=0&keyword=U42360&start_day=30&start_month=03&start_year=2012&end_day=18&end_month=04&end_year=2012&data_selection2=0

您可以直接访问该URL,无需手动或从cURL接受任何许可协议。

请注意,如果您已接受此协议,则此网站会存储一个cookie,声明此类信息需要删除才能返回许可协议页面。您可以通过点击“资源”选项卡,然后转到“Cookies”并删除每一个,然后刷新上面张贴的URL来完成此操作。