Apache HttpClient 4 和 JavaScript

3

我使用Apache HttpClient访问一个网页。我想点击一个链接,但是这个链接是JavaScript,我该如何处理JavaScript链接的点击并跟随URL重定向?

样例JavaScript和HTML代码:

<a href="javascript:send(32023, 'YGHN_JKM', '8LMK');"> link</a>


function send(content_id, fic, cgRate) {
        var params = new Hash();
        params.set('content_id', content_id);
        params.set('tool', fic);
        params.set('cgRate', cgRate);

        new Ajax.Updater('return', '/mypkg/tools', {
            method: 'post',
            parameters: params,
            evalScripts: true,
            onInitialize: new Effect.Appear('loader', {duration: 0.0}),
            onComplete: new Effect.Fade('loader', {duration: 1.2})
        });
}

这是一个Java的问题吗?http://hc.apache.org/httpcomponents-client-ga/ 还是你在进行屏幕抓取? - Kris Krause
我认为这是一个Java问题!如果您认为不是,那是您的意见。谢谢。 - JaVaBoy
所以...听起来你正在使用Apache HttpClient加载带有JavaScript链接的页面。你想在应用程序中编程点击JavaScript链接并“跟随”它们? - Zack The Human
是的,我确实想通过我的应用程序以编程方式单击JavaScript链接并“跟随”它们。 - JaVaBoy
1个回答

8
看起来您试图访问的页面使用AJAX获取链接。仅使用原始HTTPClient模拟此行为可能会很困难。 HTTPClient用于“原始”HTTP通信,而不是浏览器仿真。相反,我建议使用类似HtmlUnit的工具,它可以模拟浏览器并执行页面上的JavaScript:http://htmlunit.sourceforge.net/ HtmlUnit具有相当好的JavaScript支持,但不是完美的。如果您需要依赖100%完美的浏览器仿真,则需要使用浏览器自动化框架,例如Selenium:http://seleniumhq.org/

谢谢,我使用Jsoup来解析HTML。我测试了htmlUnit并告诉你结果。你能给我列出一些浏览器自动化框架的清单或者告诉我哪些是最好的吗?谢谢。 - JaVaBoy
首先尝试使用HtmlUnit来查看它是否满足您的需求。如果不起作用,那么除了Selenium之外,您就没有其他选择了,但这是一个更重的解决方案(它使用真实浏览器的实例),并且可能适用于您特定的用例,也可能不适用。 - Lauri Piispanen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接