htmlunit无法获取执行js后的网页内容,特别急

兵工厂三剑客 2017-12-25 07:14:39
参考了网上的一些资料,看到很多人都能获取。
我的主要代码如下:


private static void readHtml(String url)
throws FailingHttpStatusCodeException, MalformedURLException, IOException, InterruptedException {

WebClient client = new WebClient(BrowserVersion.FIREFOX_24);
client.setJavaScriptTimeout(5000);
client.getOptions().setUseInsecureSSL(true);// 接受任何主机连接 无论是否有有效证书
client.getOptions().setJavaScriptEnabled(true);// 设置支持javascript脚本
client.getOptions().setCssEnabled(false);// 禁用css支持
client.getOptions().setThrowExceptionOnScriptError(false);// js运行错误时不抛出异常
client.getOptions().setTimeout(100000);// 设置连接超时时间
client.getOptions().setDoNotTrackEnabled(false);
client.setAjaxController(new NicelyResynchronizingAjaxController());// 设置Ajax异步
client.waitForBackgroundJavaScript(20000);
HtmlPage page = (HtmlPage) client.getPage(url);
// String hrefValue = "javascript:add(1,1,'+');";
// ScriptResult s = page.executeJavaScript(hrefValue);//执行js方法
// HtmlPage hpm=(HtmlPage) s.getNewPage();//获得执行后的新page对象
// client.setJavaScriptTimeout(5000);
Thread.sleep(3000);
String content = page.asXml();
System.out.println(content);
client.closeAllWindows();
}


用的htmlunit是2.14,但是以上代码输出的内容是执行js之前 的内容。请问是什么原因。

特别急。
...全文
1970 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
MarkC乾 2020-02-28
  • 打赏
  • 举报
回复
大佬,怎么设置不需要登录验证
lozhyf 2019-04-01
  • 打赏
  • 举报
回复
把图表可以抓过来吗
caoqinghuang 2019-02-12
  • 打赏
  • 举报
回复
无良的楼主,您倒是把具体解决方案讲清楚哈~~~~
@.. 2018-12-21
  • 打赏
  • 举报
回复
我现在也碰到了和楼主相似的问题,就是拿不到js加载的ajax后的数据,只是拿到一个页面框架。
  • 打赏
  • 举报
回复
登录验证是指什么,是指网页要登录验证还是htmlunit要求?求指教
兵工厂三剑客 2018-01-04
  • 打赏
  • 举报
回复
引用 2 楼 guorui521 的回复:
htmlunit对js不太友好,我今天试了一个phantomjs,这个是可以获取到js执行后的网页源码的!不过速度有点慢!
已经解决了,是因为需要登录验证。改成不需要登录验证就可以了。
紫苑1111 2017-12-27
  • 打赏
  • 举报
回复
htmlunit对js不太友好,我今天试了一个phantomjs,这个是可以获取到js执行后的网页源码的!不过速度有点慢!
兵工厂三剑客 2017-12-25
  • 打赏
  • 举报
回复
这个是网页源码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>工作票</title>
    <link href="/pages_res/B-JUI/themes/css/bootstrap.css?NEW-IMS-VERSION=1" rel="stylesheet">
    <link href="/pages_res/B-JUI/themes/css/style.css?NEW-IMS-VERSION=1" rel="stylesheet">
    <link href="/pages_res/B-JUI/themes/blue/core.css?NEW-IMS-VERSION=1" rel="stylesheet">
    <link href="/pages_res/B-JUI/plugins/nice-validator-1.0.7/jquery.validator.css?NEW-IMS-VERSION=1" rel="stylesheet">
    <link href="/pages_res/css/all-init.css?NEW-IMS-VERSION=1" rel="stylesheet">
    <link href="/jcw/pages_zz/css/pages_zz.css" rel="stylesheet">
</head>
<body>
<div class="M-table-box">
    <div class="pagesize-A4 nice-validator">

        <div id="sourceDot" class="marginB20"></div>
    </div>

    <script id="sourceDotTmpl" type="text/x-dot-template">
        <span class="workTicket-seal">垂直夜间</span>
        <input type="hidden" name="workticketFirstId" value="{{=it.workticketFirst.workticketFirstId}}"/>
        <input type="hidden" name="workticketId" value="{{=it.workticketId}}"/>
        <table class="page-green">
            <tbody>
            <tr class="ticket-type-1">
                <td colspan="6" class="text-center noborder">
                    <span class="ticketTitle text-green">接触网第一种工作票</span>
                </td>
            </tr>
            <tr>
                <td colspan="3" class="noborder">
                    <span class="text-green label-td">{{=it.deptName}}</span>
                </td>
                <td colspan="3" class="text-right noborder">
                    <span class="text-green label-td">第{{=it.workticketCode}}号</span>
                </td>
            </tr>
            <tr class="ticket-type-1">
                <td class="label-td">封锁范围</td>
                <td colspan="3">
                    <span>{{=it.workticketFirst.blockRange}}</span>
                </td>
                <td class="label-td" rowspan="2">发票人</td>
                <td class="text-center" rowspan="2">
                    <span>{{=it.workticketFirst.drawer}}</span>
                </td>
            </tr>
            <tr class="ticket-type-1">
                <td class="label-td">作业范围</td>
                <td colspan="3">
                    <span>{{=it.workticketFirst.workRange}}</span>
                </td>
            </tr>
            <tr>
                <td class="label-td">作业内容</td>
                <td colspan="3">
                    <span>{{=it.workticketFirst.workContent}}</span>
                </td>
                <td class="label-td">发票时间</td>
                <td class="text-center">
                    <span>{{=it.workticketFirst.drawDateString}}</span>
                </td>
            </tr>
            <tr style="height: 30px;">
                <td class="label-td">工作票有效期</td>
                <td colspan="5" class="text-center">
                    <span>自 {{=it.workticketFirst.validStartDateString}} 至 {{=it.workticketFirst.validEndDateString}} 止</span>
                </td>
            </tr>
            <tr>
                <td class="label-td">工作领导人</td>
                <td colspan="5" class="text-center">
                    <span>姓名:{{=it.workticketFirst.workLeader}}</span>
                    <span style="margin-left: 20px;">安全等级:(<span class="workLeaderSafeLevel">{{=it.workticketFirst.workLeaderSafeLevel}}级</span>)</span>
                </td>
            </tr>
            <tr class="user-list">
                <td class="label-td" rowspan="6">
                    作业组成员<br>姓名及安全<br>等级(安全等级<br>填在括号内)
                </td>
                <td></td>
                <td></td>
                <td></td>
                <td></td>
                <td></td>
            </tr>
            <tr class="user-list">
                <td></td>
                <td></td>
                <td></td>
                <td></td>
                <td></td>
            </tr>
            <tr class="user-list">
                <td></td>
                <td></td>
                <td></td>
                <td></td>
                <td></td>
            </tr>
            <tr class="user-list">
                <td></td>
                <td></td>
                <td></td>
                <td></td>
                <td></td>
            </tr>
            <tr class="user-list">
                <td></td>
                <td></td>
                <td></td>
                <td></td>
                <td></td>
            </tr>
            <tr class="user-list">
                <td></td>
                <td></td>
                <td></td>
                <td></td>
                <td class="last-td">
                    <span>总计<span class="totalWorkJoinner">0</span> 人</span>
                </td>
            </tr>
            <tr class="self-hide">
                <td class="label-td">工作组超出人员</td>
                <td colspan="5"><span class="workMemberOver"></span></td>
            </tr>
            <tr>
                <td class="label-td">需停电的设备</td>
                <td colspan="5">{{=it.workticketFirst.powerDownDevice}}</td>
            </tr>
            <tr>
                <td class="label-td">装设接地线的位置</td>
                <td colspan="5">
                    <span id="earthWireSite">{{=it.workticketFirst.earthWireSite}}</span>
                </td>
            </tr>
            <tr>
                <td class="label-td">作业区防护措施</td>
                <td colspan="5">{{=it.workticketFirst.workProtectMeasures}}</td>
            </tr>
            <tr>
                <td class="label-td">其他安全措施</td>
                <td colspan="5">{{=it.workticketFirst.otherSafetyMeasures}}</td>
            </tr>
            <tr>
                <td class="label-td">变更作业组成员记录</td>
                <td colspan="5"><span></span></td>
            </tr>
            <tr>
                <td class="label-td">工作票结束时间</td>
                <td colspan="5" class="text-center">
                    <span style="letter-spacing: 80px;" class="">年月日时分</span>
                </td>
            </tr>
            <tr>
                <td class="label-td">工作领导人(签字)</td>
                <td colspan="2"></td>
                <td class="label-td">发票人(签字)</td>
                <td colspan="2"></td>
            </tr>
            <tr>
                <td class="label-td">接票人(签字)</td>
                <td colspan="2"></td>
                <td class="label-td">接票时间</td>
                <td colspan="2" class="text-right">
                    <span style="letter-spacing: 30px;" class="">年月日时分</span>
                </td>
            </tr>
            <tr>
                <td class="label-td noborder" colspan="6">
                    <span class="pull-left">说明:本票用白色纸印绿色格和字。规格:A4。</span>
                </td>
            </tr>
            </tbody>
        </table>
    </script>
</div>

<script src="/pages_res/B-JUI/js/jquery-1.11.3.min.js?NEW-IMS-VERSION=1"></script>
<script src="/pages_res/B-JUI/js/bjui-all.js?NEW-IMS-VERSION=1"></script>
<script src="/pages_res/B-JUI/plugins/layer/layer.js?NEW-IMS-VERSION=1"></script>
<script src="/pages_res/B-JUI/plugins/dot/doT.js?NEW-IMS-VERSION=1"></script>
<script src="/pages_res/B-JUI/plugins/WdatePicker/WdatePicker.js?NEW-IMS-VERSION=1"></script>
<script src="/pages_res/js/all-init-fn.js?NEW-IMS-VERSaccountRecord7.htmlION=1"></script>
<script src="/jcw/pages_zz/js/common.js?NEW-IMS-VERSION=111"></script>
<script src="/jcw/pages_zz/js/workticket.js"></script>
<script type="text/javascript">

    $(function () {

        window.g_jdlId = searchByParam('jdlId');

        // DOT绑定数据
        ajaxGet('/JcwbWorkticket/show.do', {jdlId: g_jdlId}, function (response) {
            var sourceDotTmpl = $('#sourceDotTmpl').html();
            var dotString = top.doT.template(sourceDotTmpl)(response);
            $('#sourceDot').html(dotString);

            // 绑定作业组成员
            bindWorkMember(response.memberList);
        });
    });


</script>
</body>
</html>

61,129

社区成员

发帖
与我相关
我的任务
社区描述
层叠样式表(英文全称:Cascading Style Sheets)是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言。
社区管理员
  • HTML(CSS)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧