【问题标题】:parsing html and following a javascript link解析 html 并遵循 javascript 链接
【发布时间】:2011-12-13 14:30:43
【问题描述】:

一位学术同事要求我从一个网站中提取信息,我需要在该网站上链接一个表格中的网页内容——对于只能访问的文本文件的内容来说并不难(就我而言可以告诉)通过点击一个javascript链接......例如

<a id="tk1" href="javascript:__doPostBack('tk1$ContentPlaceHolder1$grid$tk$OpenFileButton','')">

该表方便地位于 id='tk1' 的表内,这很好...但是我如何点击拉取文本文件的链接。

理想情况下,我想在 R 中执行此操作...我可以通过说来获取文本格式的相关表格

u <- the url of interest...
library(XML)
tables = readHTMLTable(u)
interestingTable <- tables[grep('tk1', names(tables))]

这将给出表格中的文本,但我如何获取该特定表格的 html?以及如何“单击”按钮并获取其背后的文本文件?

我注意到有一个包含大量隐藏值的表单 - 该站点似乎是由 asp.net 驱动的,并且使用难以穿透的 URL。

非常感谢!

【问题讨论】:

    标签: r html-parsing


    【解决方案1】:

    这有点棘手,并且没有完全集成到 R 中,但是一些 system()-fddling 会让你开始。

    
    var page = new WebPage();
    page.open('http://www.menne-biomed.de/uni/JavaButton.html', function (status) {
        if (status !== 'success') {
            console.log('Unable to access network');
        } else {
            var ua = page.evaluate(function () {
                var t =  document.getElementById('tk1').href;
                var re = new RegExp('\((.*)\)');
                return eval(re.exec(t)[1]);
    }); console.log(ua);// Outputs @987654324@ } phantom.exit(); });
    • 在路径上使用 phantomjs,调用

      phantomjs javabutton.js

    该链接将显示在控制台上。使用任何方法将其导入 Rcurl。

    不优雅,但也许有一天有人将 phantomjs 包装到 R 中。如果 JaveButton.html 的链接丢失,这里是代码。

    <!DOCTYPE html >
    <head>
    <script>
    inaccesibleJavascriptVar = 'http://' + 'cran.at.r-project.org/';
    function doPostBack(myref)
              {
                window.location.href= myref;
                return false;
            }
    </script>
    </head>
    <body>
    <a id="tk1" href="javascript:doPostBack(inaccesibleJavascriptVar)" >Click here</a>
    </body>
    </html>
    

    【讨论】:

      【解决方案2】:

      看看 RCurl 包:

      http://www.omegahat.org/RCurl/

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-05-08
      • 1970-01-01
      • 2019-07-10
      • 1970-01-01
      • 2012-06-03
      • 2016-01-28
      • 2013-07-22
      相关资源
      最近更新 更多