如何让 htmlunit 执行 javascript 时,不下载整个页面,而只返回url

HtmlUnit(Java) - 快速入门学习 - 无界面浏览器 文章目录1. 概述2. 注意2.0 js解析问题2.1 关闭HtmlUnit日志3. 使用3.1 抓取IT之家周榜内容 - 单页面3.2 抓取IT之家周榜第九篇文章的内容 - 双页面3.3 模拟用户操作 - (这个功能个人感觉非常非常的鸡肋,只能用于非常简单的JS,但是一般网站的动作触发都会进行一系列复杂的JS操作,所以想爬虫还是推荐Selenium)3.4 文件下载3.5 弹框处理 注意: 对于百度翻译、百度搜索、腾讯翻译等页面依然抓取不了结果,对于加密的JS文件解析基本不生效 — 推荐使用Seleni 阅读详情
AI摘要

HTMLUnit是一款用于页面分析的开源Java工具,提供获取页面源码、执行JavaScript及优化JavaScript执行过程的方法。

htmlunit 简介:
htmlunit 是一款开源的 java 页面分析工具,启动 htmlunit 之后,底层会启动一个无界面浏览器,用户可以指定浏览器类型:firefox、ie 等,如果不指定,默认采用 INTERNET_EXPLORER_7:
WebClient webClient = new WebClient(BrowserVersion.FIREFOX_3_6);

通过简单的调用:
HtmlPage page = webClient.getPage(url);
即可得到页面的 HtmlPage 表示,然后通过:
InputStream is = targetPage.getWebResponse().getContentAsStream()
即可得到页面的输入流,从而得到页面的源码,这对做网络爬虫的项目来说,很有用。
当然,也可以从 page 中得更多的页面元素。

很重要的一点是,HtmlUnit 提供对执行 javascript 的支持:
page.executeJavaScript(javascript)
执行 js 之后,返回一个 ScriptResult 对象,通过该对象可以拿到执行 js 之后的页面等信息。默认情况下,内部浏览器在执行 js 之后,将做页面跳转,跳转到执行 js 之后生成的新页面,如果执行 js 失败,将不执行页面跳转。

htmlunit 执行 js 的大致过程如下:


从图中可以看出,htmlunit 执行js时,会将整个页面 download 下来,而很多时候,我们执行 js,只是因为需要执行后后生成的 url,不必要的频繁页面 download 不但会增加程序运行时长,也会加重网络负载。有下面两种方案可以完成这个需求:

1). 第一种方法是拿到这个 url 之后,将其返回,但代码的调用层次较深,如果修改源码的话,需要修改的地方可能较多,实现起来可能有一定的复杂性和难度。
2). 第二种方法是,生成一个伪 response,而不是去真正获取页面的 response,用来构造所有的新 page。该方法具有代码改动小,实现方便的特点。

因第一种方法对源码的修改大,实现起来也比较困难,这里给出第二种方法的实现:

查看源码可以发现,在:

com.gargoylesoftware.htmlunit.javascript.host.location.java 类中,有这样一个方法:

    public void jsxSet_href(final String newLocation) throws IOException {
        final HtmlPage page = (HtmlPage) getWindow(getStartingScope()).getWebWindow().getEnclosedPage();
        if (newLocation.startsWith(JavaScriptURLConnection.JAVASCRIPT_PREFIX)) {
            final String script = newLocation.substring(11);
            page.executeJavaScriptIfPossible(script, "new location value", 1);
            return;
        }
        try {
            final URL url = page.getFullyQualifiedUrl(newLocation);
            final URL oldUrl = page.getWebResponse().getWebRequest().getUrl();
            if (url.sameFile(oldUrl) && !StringUtils.equals(url.getRef(), oldUrl.getRef())) {
                // If we're just setting or modifying the hash, avoid a server hit.
                jsxSet_hash(newLocation);
                return;
            }

            final WebWindow webWindow = getWindow().getWebWindow();
            webWindow.getWebClient().download(webWindow, "", new WebRequest(url), "JS set location");            
        }
        catch (final MalformedURLException e) {
            LOG.error("jsxSet_location('" + newLocation + "') Got MalformedURLException", e);
            throw e;
        }
    }
第 18 行,就是去 download 页面,download 方法如下:

    public void download(final WebWindow requestingWindow, final String target,
        final WebRequest request, final String description) {
        final WebWindow win = resolveWindow(requestingWindow, target);
        final URL url = request.getUrl();
        boolean justHashJump = false;
        if (win != null) {
            final Page page = win.getEnclosedPage();
            if (page instanceof HtmlPage && !((HtmlPage) page).isOnbeforeunloadAccepted()) {
                return;
            }
            final URL current = page.getWebResponse().getWebRequest().getUrl();
            if (url.sameFile(current) && !StringUtils.equals(current.getRef(), url.getRef())) {
                justHashJump = true;
            }
        }

        // verify if this load job doesn't already exist
        for (final LoadJob loadJob : loadQueue_) {
            if (loadJob.response_ == null) {
                continue;
            }
            final WebRequest otherRequest = loadJob.response_.getWebRequest();
            final URL otherUrl = otherRequest.getUrl();
            // TODO: investigate but it seems that IE considers query string too but not FF
            if (url.getPath().equals(otherUrl.getPath())
                && url.getHost().equals(otherUrl.getHost())
                && url.getProtocol().equals(otherUrl.getProtocol())
                && url.getPort() == otherUrl.getPort()
                && request.getHttpMethod() == otherRequest.getHttpMethod()) {
                return; // skip it;
            }
        }

        final LoadJob loadJob;
        if (justHashJump) {
            loadJob = new LoadJob(win, target, url);
        }
        else {
            try {
              final WebResponse response = loadWebResponse(request);
              loadJob = new LoadJob(requestingWindow, target, response);
            }
            catch (final IOException e) {
                throw new RuntimeException(e);
            }
        }
        loadQueue_.add(loadJob);
    }
第40, 41行,拿到一个页面的 response,然后根据该 response 生成一个 LoadJob 对象,放入loadQueue_ 队列,后续将从队列中取出该 LoadJob 对象,完成生成新页面并加载至浏览器的工作。我们只要修改这里 response 的生成方式,思路如下:

如果当前线程是第一次执行该 download 方法,就不对代码做修改,让其生成一个真正的 response,然后,将该 response 对象保存起来,待该线程后续再执行 js 进入该方法,不再生成 response 对象,而是将之前保存起来的 response 拿出来直接使用,并修改对应的 url 为执行 js 之后生成的 url 即可:

response.getWebRequest().setUrl(request.getUrl());

js 执行完成之后,返回的 ScriptResult  对应的 url ,就是执行 js 之后生成的 url 了,但如果去拿页面的源码的话,会得到 ”错误“ 的数据,这是因为我们每次都用了同一个 response,而不是 url 页面对应的 url 。因为我们的初衷就是得到正确的 url ,而不去 download 整个页面,所以这种 ”错误“ 不会影响我们的程序。

HtmlUnit:探索Web自动化的强大工具 HtmlUnit 是一个开源的“无头”(headless)浏览器,它模拟了浏览器环境,允许开发者在不需要实际浏览器界面的情况下执行JavaScript、CSS、DOM操作以及HTTP请求。它模拟了浏览器的许多方面,包括DOM操作、CSS选择器、AJAX请求等,使得开发者可以在服务器端或无需图形界面的环境中执行Web应用程序的自动化测试。通过模拟浏览器的行为,HtmlUnit使得开发者能够在无需实际浏览器界面的情况下执行复杂的Web操作。对于AJAX请求,HtmlUnit提供了。 阅读详情

相关推荐

java htmlunit jsoup实现爬取网页img标签中的图片

java htmlunit jsoup实现爬取网页img标签中的图片 htmlunit 是一款开源的java 页面分析工具,可以模拟浏览器执行js代码并获取执行之后的html网页代码。 jsoup 是一款Java 的HTML解析器,可以使用简单的语法获取html标签中属性的值。 如果获取到了js执行之后的img标签的src属性值,就可以根据这个图片的url将图片下载到本地。 需要的maven依赖: <!--jsoup--> <dependency> <groupI

qq_46239972的博客 1715

【零基础】快速入门爬虫框架HtmlUnit

4、找到前面下载的jar文件(htmlunit-2.35.0->lib目录),将所有jar文件选中,点击“打开”按钮,而后点击“OK”按钮,则htmlunit所有jar文件就引入了我们新建的项目,在此项目中也就可以直接使用htmlunit提供的各种功能来实现网页分析。2、HtmlUnit,项目以jar文件的形式发布,可以上官网下载最新版本(htmlunit-2.35.0-bin.zip)并解压,所有jar文件都在lib目录中。1、java,首先你得安装好javaSDK(版本随意)、编译器(eclipse)

布兰姥爷的博客 722

HtmlUnit执行自定义JavaScript脚本并回调Java方法】——实现与网页交互的无界面测试

本文介绍了如何使用HtmlUnit执行自定义JavaScript脚本,并通过回调Java方法实现更灵活的无界面测试。HtmlUnit是一个强大的Java库,它模拟了一个完整的浏览器环境,可用于执行JavaScript并与网页进行交互。HtmlUnit是一个基于Java的无界面浏览器库,它提供了完整的浏览器功能,包括解析HTML、执行JavaScript、处理表单等。HtmlUnit还提供了回调Java方法的功能,可以在JavaScript中调用Java方法,实现更复杂的交互逻辑。方法,并输出相应的消息。

CodeWhizZ的博客 672

HtmlUnit 执行自定义JS,并获取执行后的结果,版本2.42.0

package com.xxx; import cn.hutool.core.io.file.FileWriter; import com.gargoylesoftware.htmlunit.BrowserVersion; import com.gargoylesoftware.htmlunit.ImmediateRefreshHandler; import com.gargoylesoftware.htmlunit.NicelyResynchronizingAjaxController; import.

nece001的专栏 2049

Java 无 GUI 浏览器:HtmlUnit 入门及实战 [特殊字符]

还不会Java爬虫?试试HtmlUnit,快速入门到实战。

甘蓝的专栏 654

通过htmlunit获取执行js代码后的html文档

获取执行js代码后的html文档。

htmlunit 执行 javascript 时,不下载整个页面只返回url

htmlunit 简介: htmlunit 是一款开源的 java 页面分析工具,启动 htmlunit 之后,底层会启动一个无界面浏览器,用户可以指定浏览器类型:firefox、ie 等,如果不指定,默认采用 INTERNET_EXPLORER_7: WebClient webClient = new WebClient(BrowserVersion.FIREFOX_3_6); 通过简

andybbc的博客 1881

IDEA 导入 jbolt项目(实验室非公开项目)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录准备一、准备数据库二、IDEA导入jbolt项目 准备 在实验室群文件中下载jbolt.zip和mysql.sql两个文件 将其解压到自己的目录下 一、准备数据库 打开Navicat新建一个jbolt数据库(字符集为utf8) 导入mysql.sql文件 数据库导入完毕 二、IDEA导入jbolt项目 点击打开一个项目 选择jbolt文件夹 以Maven形式打开 打开pom.xml 在里面添加jetty-server依赖

weixin_44094842的博客 972

HTMLUnit

http://sourceforge.net/projects/htmlunit/ http://www.blogjava.net/caizh2009/archive/2010/05/28/322145.html

u010935362的专栏 420

告别兼容性困扰:在F-Droid中安全部署Termux的完整指南

本文提供了一份在F-Droid中安全部署Termux的完整指南,旨在彻底解决Android设备上的兼容性困扰。文章详细阐述了为何选择F-Droid而非Google Play商店,并逐步指导用户完成从彻底清理旧版本、安装F-Droid客户端、授予权限到最终安装配置Termux的全过程。指南还涵盖了进阶的稳定性配置、数据迁移方法以及常见问题排查,确保用户获得一个稳定、无冲突的命令行工作环境。

weixin_29224309的博客 941

芯片设计中的“隐形杀手”:手把手教你理解并优化互连寄生参数(以SPEF/DSPF为例)

本文深入探讨了芯片设计中互连寄生参数的影响及优化策略,特别关注SPEF/DSPF文件解析与静态时序分析。通过实际案例展示了耦合电容对时序收敛的关键影响,并提供从定位到优化的完整解决方案,助力工程师应对先进工艺下的设计挑战。

weixin_30687051的博客 597

htmlUnit的读取js渲染的页面

htmlunit的读取js渲染的页面

Wzy000001的博客 3462

ESP32小车DIY:从零搭建无线遥控智能车(附完整代码与避坑指南)

本文详细介绍了如何从零开始DIY一台基于ESP32的无线遥控智能小车。内容涵盖核心硬件选型、电路设计、低延迟ESP-NOW无线通信协议的配置与实战,以及双电机差速控制算法与PWM调速的实现。文章提供了完整的代码示例和关键的避坑指南,旨在帮助开发者快速构建稳定可靠的智能车平台,并为进一步的功能扩展奠定基础。

gamma的博客 467

Htmlunit 使用总结

环境 <dependency> <groupId>net.sourceforge.htmlunit</groupId> <artifactId>htmlunit</artifactId> <version>2.27</version> </dependency> 基本使用 Htmlunit就相当于一个由Java写的一个无

weixin_45624392的博客 1349

STM32F4使用CUBEMX ADC定时采样+DMA

STM32、FFT、ADC、TIM

m0_62379750的博客 4221

大学计算 - NumPy库的矩阵运算 实训答案

本文介绍了三个NumPy矩阵操作的实验练习。第一关练习ndarray类型操作,包括矩阵构造、元素平方和计算、矩阵乘积运算和逆矩阵行列式计算;第二关针对matrix类型,涉及绝对值最大值获取、特定矩阵乘积运算和转置矩阵特征值计算;第三关实现Moore-Penrose伪逆矩阵计算,并与NumPy内置pinv函数结果比较误差。实验涵盖了NumPy核心矩阵操作,展示了从基础运算到高级矩阵分解的应用,帮助掌握科学计算中的矩阵处理技巧。

2403_89314916的博客 308

【JAVA】【获取vue页面】什么,不支持vue页面的内容获取,支持的来了,还不需要额外安装浏览器。

来源地址:https://juejin.cn/post/7032620393622044686 【每日一点事】 毛豆和黄豆其实是一个东西,毛豆是年轻的时候,黄豆是已经年老的时候。 一、前言 最近,一个网友问,怎么想做个数据调查报告,都被页面加载403、页面内容加载不到、vue页面劝退。什么?这点小事还解决不了?vue页面不支持?我立马甩了这篇代码给他! vue页面 403页面 二、代码分析 没改代码前的代码(获取不到vue页面和403页面) public static void main(S

南方者的博客 3114

零基础学习CANoe Panel(17)—— Panel CAPL Function

CANoe内置了几个CAPLFunction,允许我们在CAPL运行时动态的更改Panel控件的属性,比如打开某个panel,禁用某个控件,更改控件颜色等。

蚂蚁小兵 3508

模拟ajax实现网络爬虫——HtmlUnit

最近在用Jsoup抓取某网站数据,可有些页面是ajax请求动态生成的,去群里问了一下,大神说模拟ajax请求即可。去网上搜索了一下,发现了这篇文章,拿过来先用着试试。转帖如下: 网上关于网络爬虫实现方式有很多种,但是很多都不支持Ajax,李兄说:模拟才是王道。确实,如...

chenyuanyuan1992的博客 182

基于 STM32 的手持式安检金属探测器设计与实现

【代码】基于 STM32 的手持式安检金属探测器设计与实现。

weixin_42300449的博客 899

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Java爬虫工具选型:HtmlUnit与Selenium的性能对比与实战指南

在Java生态中进行动态网页数据抓取时,浏览器自动化工具是核心技术组件。其核心原理是通过模拟或控制浏览器行为来执行JavaScript,从而获取渲染后的页面内容。这项技术的价值在于能够处理现代Web应用中广泛使用的Ajax、React、Vue等动态加载技术,解决了传统HTTP客户端无法直接获取完整HTML源码的问题。在爬虫开发、自动化测试、网页监控等应用场景中,选择合适的工具直接影响项目的性能、稳定性和开发效率。本文聚焦于HtmlUnit和Selenium这两个主流工具,通过性能压测数据对比,深入分析两者在

weixin_33985507的博客 378

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

HtmlUnit 模拟浏览器请求 Java可以调用的内置浏览器

引入包: <!-- https://mvnrepository.com/artifact/net.sourceforge.htmlunit/htmlunit --> <dependency> <groupId>net.sourceforge.htmlunit</groupId> <artifactId>htmlunit</artifactId>

nece001的专栏 771

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

htmlunit java_HtmlUnit使用

packagecom.lanyotech.www.wordbank;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.InputStream;importjava.io.OutputStream;importjava.net.MalformedURLException;importjava.u...

weixin_29702195的博客 202

java使用htmlunit + jsoup 爬网站图片案例(爬虫学习)

该文章用于自己学习爬虫使用。

喜欢分享,善于记录工作中遇到的问题,和自己的思考 1388

Java实现指定URL的截图方法

Java Selenium实现指定URL的截图方法

weixin_42237509的博客 1239

【转】 HtmlUnit进行Web自动化测试

HtmlUnit进行Web自动化测试2008-12-17 10:00一、HtmlUnit简介HtmlUnit是Junit 的扩展测试框架之一,该框架模拟浏览器的行为,开发者可以使用其提供的API对页面的元素进行操作,套用官方网站的话HtmlUnit“是Java程序的浏览器”。HtmlUnit支持HTTP,HTTPS,COOKIE,表单的POST和GET方法,能够对HTML文档进行包装,页面的各种元素都可以被当作对象进行调用,另外对JavaScript的支持也比较好。二、HtmlUnit在实际项目中的应用在官

strawbingo的专栏 5263
上一篇: 通过扩展 PriorityBlockingQueue 的 take() 实现任务定时触发
下一篇: jni调用时,jvm报的一个错误
eclipseek
博客等级 码龄16年 11粉丝 4原创
评论 11
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值