导航:首页 > 编程语言 > javahtmlunit

javahtmlunit

发布时间:2023-11-13 14:05:42

‘壹’ java中如何点击按钮跳转到网页(在浏览器中打开)

Desktop desktop = Desktop.getDesktop();
desktop.browse(new URI("URL地址"));

这个是用你默认的浏览器 打开指定超链

‘贰’ 如何用JAVA爬取AJAX加载后的页面

普通的爬取是抓不了js的之后的数据的 可以用phantomjs或者htmlUnit实现
附上phantomjs示列代码
package cn.wang.utils;

import java.util.Random;

import com.gargoylesoftware.htmlunit.BrowserVersion;
import com.gargoylesoftware.htmlunit.CookieManager;
import com.gargoylesoftware.htmlunit.;
import com.gargoylesoftware.htmlunit.WebClient;

public class htmlUnitUtils {

static WebClient webClient = null;

static Random random = new Random();

static{
//1.创建对象
webClient = new WebClient(BrowserVersion.CHROME);
//2.设置参数
//启动js
webClient.getOptions().setJavaScriptEnabled(true);
//关闭css渲染
webClient.getOptions().setCssEnabled(false);
//启动重定向
webClient.getOptions().setRedirectEnabled(true);
//设置连接超时时间 ,这里是10S。如果为0,则无限期等待
webClient.getOptions().setTimeout(1000 * 15);
//启动cookie管理
webClient.setCookieManager(new CookieManager());
//启动ajax代理
webClient.setAjaxController(new ());
//js运行时错误,是否抛出异常
webClient.getOptions().(false);
//设置浏览器请求信息
webClient.addRequestHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
webClient.addRequestHeader("Accept-Encoding", "gzip, deflate");
webClient.addRequestHeader("Accept-Language", "zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2");
webClient.addRequestHeader("Connection", "keep-alive");
webClient.addRequestHeader("Upgrade-Insecure-Requests", "1");
}

public static void runJs(String url){
try {
webClient.addRequestHeader("User-Agent", Constant.useragents[random.nextInt(Constant.useragents.length)]);
//等待js渲染执行 waitime等待时间(ms)
webClient.waitForBackgroundJavaScript(1000 * 10);
//3.获取页面
webClient.getPage(url);
} catch (Exception e) {
e.printStackTrace();
} finally {
if(webClient != null){
webClient.close();
}
}
}

public static void main(String[] args) {
runJs("http://www.gou.hk/");
System.setProperty("phantomjs.binary.path", "D:\\works\\tool\\phantomjs-2.1.1-windows\\bin\\phantomjs.exe");

}
}

‘叁’ 如何用htmlunit向服务器javascrtipt提交数据和得到运行结果

看了下你的网站,你的目的应该是测试按下搜索按钮之后显示的结果网页里面的内容是否符合预想吧,其实htmlunit本身相当于模拟了一个浏览器,所以你不需要分别执行那几个javascript,只要用htmlunit的webclient用你的地址装入网页(这时候他会自动装入需要的javascript并执行),然后用你会得到一个htmlpage对象,从里面找到需要填值的input对象,设置参数,然后找到搜索按钮,模拟点击即可,然后webclient会像真正的浏览器一样做submit,并更新他内部的网页数据,之后你只要在更新过的htmlpage对象中寻找预想结果应该生成的网页对象并判断其值是否正确即可。
我没有用过python版的htmlunit,我用的是java版,但用法应该类似,你也可以参考下面的这个网页,当然他只做到了submit,之后的对结果的判断做法是类似的,也可以用你上面写的通过xpath到结果网页里面寻找的方法。
http://blog.csdn.net/xuweilinjijis/article/details/8984290

‘肆’ Java htmlunit click 方法点击没反应怎么回事

解决思路如下:
第三个tr点击的时候其实是有反应的 是有向服务器请求数据的 不过不知道为啥htmlunit没有给我做修改页面代码的操作 不过既然有发request 那就会有response 既然有response response里就一定有我要的数据
首先先:
MainService.page = subGroup.getValue().click(); //模拟点击 向服务器发送请求 用一个HtmlPage对象接着
WebResponse res = MainService.page.getWebResponse(); //获取最近请求的响应
String html = res.getContentAsString(); //将响应变为字符串

接下来变为字符串之后 就可以做想做的操作了 因为我只是要一个URL地址 所以 接下来我做了切割字符串的操作 得到我要的url
int endNum = html.indexOf(subGroup.getValue().asText()); //操作字符串 拿到url
String str = html.substring(0, endNum);
int beginNum = str.lastIndexOf(URL的特有起始字段);
String str2 = html.substring(beginNum, endNum);
int buffer = str2.length()-str2.indexOf("\"");
String url = html.substring(beginNum, endNum-buffer);
因为网页代码的缘故 我有一些特别的操作 不过上面几行代码就是从response里获得url的过程 这个过程要根据网页的不同具体分析的

接下来只要将得到的url送给getPage方法就能得到正常的页面了
MainService.page = wc.getPage(url);

阅读全文

与javahtmlunit相关的资料

热点内容
俄罗斯圣诞小姐姐入眠解压声音 浏览:452
手机分身加密有什么用 浏览:261
程序员怎么跟男朋友说我爱你 浏览:309
单片机频率变化 浏览:428
哪个app可以看赌神 浏览:466
rstudiopython 浏览:127
团队如何开发服务器 浏览:440
php选择数据库的函数 浏览:772
dhcp服务器新增地址 浏览:930
程序员跑三个月外卖 浏览:941
linux配置tomcat的jdk路径 浏览:363
液体压缩公式 浏览:777
php开发后台管理系统 浏览:360
python二分查找递归 浏览:447
微信如何发视频不压缩 浏览:902
河北2021美术高考综合分算法 浏览:606
如何为电脑文件夹加密 浏览:835
电脑自启动应用命令 浏览:690
php判断一个文件是否存在 浏览:829
php导出xml文件 浏览:904