【问题标题】:Skip particular Javascript execution in HTML unit在 HTML 单元中跳过特定的 Javascript 执行
【发布时间】:2013-01-21 13:43:35
【问题描述】:

我有一个网址。我想在执行 Java 脚本后获取 URL 的页面源。

Fetch Page source using HtmlUnit : URL got stuck

一开始怀疑是系统资源和CPU占用率高导致URL卡住了。

然后我尝试在 HTML UNIT 2.9 和 2.11 上运行它。它在解析时卡在两者上。请参阅 the above question for HTML UNIT code scrape that is getting stuck

现在我怀疑这可能是由于 JS 执行进入无限循环。

我想检查导致问题的 JS 文件并将它们从执行中删除。

如果它们是用于谷歌分析、推特等网站的 JS,我可能根本不需要它们。

所以我想找到一种方法来告诉 HTML 单元忽略某些 JS 文件并执行其余部分。

有人知道怎么做吗?

【问题讨论】:

    标签: htmlunit


    【解决方案1】:

    试试这个。它对我有用:

    class InterceptWebConnection extends FalsifyingWebConnection{
        public InterceptWebConnection(WebClient webClient) throws IllegalArgumentException{
            super(webClient);
        }
        @Override
        public WebResponse getResponse(WebRequest request) throws IOException {
            WebResponse response=super.getResponse(request);
            if(response.getWebRequest().getUrl().toString().endsWith("dom-drag.js")){
                return createWebResponse(response.getWebRequest(), "", "application/javascript", 200, "Ok");
            }
            return super.getResponse(request);
        }
    }
    

    然后在设置webClient时写下以下内容

    new InterceptWebConnection(webClient);
    

    【讨论】:

    • 我也遇到了同样的问题。
    • 嗨,我的 Web 客户端已创建列出此 WebClient webClient = new WebClient();我应该在哪里添加这个拦截?
    猜你喜欢
    • 2016-09-25
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    • 2013-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多