`

htmlunit分页实现

阅读更多
package com.htmlunit.sky;

import java.math.BigDecimal;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import com.gargoylesoftware.htmlunit.BrowserVersion;
import com.gargoylesoftware.htmlunit.CollectingAlertHandler;
import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.html.DomNodeList;
import com.gargoylesoftware.htmlunit.html.HtmlDivision;
import com.gargoylesoftware.htmlunit.html.HtmlElement;
import com.gargoylesoftware.htmlunit.html.HtmlForm;
import com.gargoylesoftware.htmlunit.html.HtmlPage;
import com.gargoylesoftware.htmlunit.html.HtmlPasswordInput;
import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
import com.gargoylesoftware.htmlunit.html.HtmlTable;
import com.gargoylesoftware.htmlunit.html.HtmlTableCell;
import com.gargoylesoftware.htmlunit.html.HtmlTableRow;
import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
/**
 * 运用htmlUnit爬网页
 *
 * @author liming
 */
public class SkyHtmlUnit {
    // 充值密码
    private static final String transPassword = "xxxx";
    // 用户名
    private static final String userName = "XXXX";
    // 密码
    private static final String userPassword = "xxxx";

    /**
     * 充值
     *
     * @param transNumber
     *            被充值用户号码
     * @param transAmount
     *            充值金额
     */
    public static boolean recharge(String transNumber, String transAmount) {
        boolean bool = false;
        try {
            BigDecimal b = new BigDecimal(transAmount);
            b = b.setScale(0, BigDecimal.ROUND_DOWN);
            WebClient client = new WebClient(BrowserVersion.INTERNET_EXPLORER_8);
            List<String> collectedAlerts = new ArrayList<String>();
            client.setAlertHandler(new CollectingAlertHandler(collectedAlerts));
            HtmlPage page1 = (HtmlPage) client
                    .getPage("http://ZXXXX/vams/");
            HtmlForm form = (HtmlForm) page1.getForms().get(0);
            HtmlTextInput username = (HtmlTextInput) form
                    .getInputByName("login:userName");
            HtmlPasswordInput password = (HtmlPasswordInput) form
                    .getInputByName("login:password");
            username.setValueAttribute(userName);
            password.setValueAttribute(userPassword);
            form.getInputByName("login:j_id_jsp_28762255_4").click();
            client.setJavaScriptEnabled(true);
            String Recharge = "http://ZXXXX/vams/WebPay/WebTrans.faces";
            HtmlPage Recharge1 = (HtmlPage) client.getPage(Recharge);
            HtmlForm RechargeForm = (HtmlForm) Recharge1.getForms().get(0);
            HtmlTextInput number = (HtmlTextInput) RechargeForm
                    .getInputByName("webPayment:transNumber");
            HtmlTextInput transAmountt = (HtmlTextInput) RechargeForm
                    .getInputByName("webPayment:transAmount");
            HtmlPasswordInput transPass = (HtmlPasswordInput) RechargeForm
                    .getInputByName("webPayment:transPassword");
            // 设置充值密码
            transPass.setValueAttribute(transPassword);
            // 设置充值金额
            transAmountt.setValueAttribute(b.toString());
            // 设置充值号码
            number.setValueAttribute(transNumber);
            RechargeForm.getInputByName("webPayment:j_id_jsp_427518967_10")
                    .click();
            String returnvalue = collectedAlerts.get(0);
            if (returnvalue.equals("充值成功!")) {
                bool = true;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        System.out.println("**********充值结束*******");
        return bool;
    }

    /**
     * 充值结果查询
     *
     * @param payNoValue
     *            充值号码
     * @param beforeTime
     *            充值时间前 格式YYYYMMdd
     * @param afterTime
     *            充值时间后 格式YYYYMMdd
     * @param rechargeAmount
     *            充值金额
     * @throws ParseException
     */
    public static List<RechargeBean> getRechargeList(String payNoValue,
            String beforeTime, String afterTime, String rechargeAmount
            ) throws ParseException {
        SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
        SimpleDateFormat formatX = new SimpleDateFormat("yyyy/MM/dd");
        String beforeT = "";
        String afterT = "";
        if (beforeTime != null && !afterTime.equals("")) {
            beforeT = formatX.format(format.parse(beforeTime));
        }
        if (afterTime != null && !afterTime.equals("")) {
            afterT = formatX.format(format.parse(afterTime));
        }
        // 存储集合
        List<RechargeBean> list = new ArrayList<RechargeBean>();
        try {
            WebClient client = new WebClient(BrowserVersion.INTERNET_EXPLORER_8);
            HtmlPage page1 = (HtmlPage) client
                    .getPage("http://ZXXXX/vams/");
            HtmlForm form = (HtmlForm) page1.getForms().get(0);
            HtmlTextInput username = (HtmlTextInput) form
                    .getInputByName("login:userName");
            HtmlPasswordInput password = (HtmlPasswordInput) form
                    .getInputByName("login:password");
            username.setValueAttribute(userName);
            password.setValueAttribute(userPassword);
            form.getInputByName("login:j_id_jsp_28762255_4").click();
            client.setJavaScriptEnabled(true);
            String Recharge = "http://ZXXXX/vams/WebPay/WebPaySearch.faces?showType=2";
            HtmlPage Recharge1 = (HtmlPage) client.getPage(Recharge);
            HtmlForm rechargeForm = (HtmlForm) Recharge1.getForms().get(0);
            // 充值号码
            HtmlTextInput payNo = (HtmlTextInput) rechargeForm
                    .getInputByName("form1:payNo");
            payNo.setValueAttribute(payNoValue);
            // 充值时间:
            HtmlTextInput j_id_jsp_1155368641_9 = (HtmlTextInput) rechargeForm
                    .getInputByName("form1:j_id_jsp_1155368641_9");
            j_id_jsp_1155368641_9.setValueAttribute(beforeT);
            HtmlTextInput j_id_jsp_1155368641_11 = (HtmlTextInput) rechargeForm
                    .getInputByName("form1:j_id_jsp_1155368641_11");
            j_id_jsp_1155368641_11.setValueAttribute(afterT);
            // 充值金额
            HtmlTextInput j_id_jsp_1155368641_13 = (HtmlTextInput) rechargeForm
                    .getInputByName("form1:j_id_jsp_1155368641_13");
            j_id_jsp_1155368641_13.setValueAttribute(rechargeAmount);
            // button
            HtmlSubmitInput button1 = (HtmlSubmitInput) rechargeForm
                    .getInputByName("form1:j_id_jsp_1155368641_32");
            HtmlPage page12 = (HtmlPage) button1.click();
            HtmlForm aa = page12.getForms().get(0);
            int divSize = aa.getByXPath("//div[@id='zhu1']").size();
            if (divSize > 1) {
                HtmlDivision div = (HtmlDivision) aa.getByXPath(
                        "//div[@id='zhu1']").get(1);
                String aad = div.asText();
                int pageNumber = (Integer
                        .parseInt(aad.split("共")[2].split("页")[0].trim()));
                Map<String, String[]> map = new HashMap<String, String[]>();
                int key = 1;
                for (int i = 0; i < pageNumber; i++) {
                    if (i == 0) {
                        DomNodeList<HtmlElement> tables = page12
                                .getElementsByTagName("table");
                        final HtmlTable table = (HtmlTable) tables.get(tables
                                .size() - 1);
                        for (final HtmlTableRow row : table.getBodies().get(0).getRows()) {
                            String[] alertPring = new String[7];
                            int d = 0;
                            for (final HtmlTableCell cell : row.getCells()) {
                                alertPring[d] = cell.asText();
                                d++;
                            }
                            map.put(key +"", alertPring);
                            key++;
                        }
                    } else {
                        HtmlPage ahtmpr = div.getHtmlElementsByTagName("a")
                                .get(3).click();
                        DomNodeList<HtmlElement> tables2 = ahtmpr
                                .getElementsByTagName("table");
                        final HtmlTable table = (HtmlTable) tables2.get(tables2
                                .size() - 1);
                        for (final HtmlTableRow row : table.getBodies().get(0)
                                .getRows()) {
                            String[] alertPring = new String[7];
                            int d = 0;
                            for (final HtmlTableCell cell : row.getCells()) {
                                alertPring[d] = cell.asText();
                                d++;
                            }
                            map.put(key +"", alertPring);
                            key++;
                        }
                    }
                }
                Set<String> keyV = map.keySet();
                Iterator<String> it2 = keyV.iterator();
                while (it2.hasNext()) {
                    RechargeBean bean = new RechargeBean();
                    String[] values = map.get(it2.next());
                    for (int i = 0; i < values.length; i++) {
                        bean.setId(values[0]);
                        bean.setDate(values[1]);
                        bean.setNumber(values[2]);
                        bean.setAmount(values[3]);
                        bean.setaType(values[4]);
                        bean.setsType(values[5]);
                        bean.setCgType(values[6]);
                    }
                    list.add(bean);
                }
            }
            System.out.println("********充值结果查询结束***********");
        } catch (Exception e) {
            e.printStackTrace();
        }
        return list;
    }

    /**
     * 返回代理商余额
     */
    public static String getBalance() {
        String balance = "";
        try {
            WebClient client = new WebClient(BrowserVersion.INTERNET_EXPLORER_8);
            HtmlPage page1 = (HtmlPage) client
                    .getPage("http://ZXXXX/vams/");
            HtmlForm form = (HtmlForm) page1.getForms().get(0);
            HtmlTextInput username = (HtmlTextInput) form
                    .getInputByName("login:userName");
            HtmlPasswordInput password = (HtmlPasswordInput) form
                    .getInputByName("login:password");
            username.setValueAttribute(userName);
            password.setValueAttribute(userPassword);
            form.getInputByName("login:j_id_jsp_28762255_4").click();
            client.setJavaScriptEnabled(true);
            String Recharge = "http://ZXXXX/vams/WebPay/WebPayRemainSearch.faces";
            HtmlPage Recharge1 = (HtmlPage) client.getPage(Recharge);
            HtmlForm rechargeForm = (HtmlForm) Recharge1.getForms().get(0);
            // button按钮请求
            HtmlSubmitInput button1 = (HtmlSubmitInput) rechargeForm
                    .getInputByName("j_id_jsp_1894475275_1:j_id_jsp_1894475275_32");
            HtmlPage page3 = (HtmlPage) button1.click();
            DomNodeList<HtmlElement> tables = page3
                    .getElementsByTagName("table");
            final HtmlTable table = (HtmlTable) tables.get(tables.size() - 1);
            for (final HtmlTableRow row : table.getBodies().get(0).getRows()) {
                int i = 0;
                for (final HtmlTableCell cell : row.getCells()) {
                    if (i == 7) {
                        HtmlPage page = cell.getHtmlElementsByTagName("a").get(
                                0).click();
                        DomNodeList<HtmlElement> pagezhu = (DomNodeList<HtmlElement>) page
                                .getElementById("zhu1").getElementsByTagName(
                                        "td");
                        for (int j = 1; j < pagezhu.getLength(); j++) {
                            balance = pagezhu.get(1).asText();
                        }
                    }
                    i++;
                }
            }
            System.out.println("*************代理商余额查询结束***********");
        } catch (Exception e) {
            e.printStackTrace();
        }
        return balance;
    }

    public static void main(String[] args) throws ParseException {
        // 充值结果查询
        // 201120619
        List<RechargeBean> list = getRechargeList("", "", "", "");
        for (int i = 0; i < list.size(); i++) {
            RechargeBean bean = list.get(i);
            System.out.println(bean.getDate());
        }
        // getRechargeList("", "", "", "", "");
        // 查询余额
        // System.out.println(getBalance());

        // 进行充值
        // System.out.println(recharge("18911019001", ""));
    }
}

分享到:
评论

相关推荐

    基于ApacheNutch和Htmlunit的扩展实现AJAX页面爬虫抓取解析插件nutch-htmlunit.zip

    protocol-htmlunit: 基于Htmlunit实现的AJAX页面Fetcher插件 parse-s2jh: 基于XPath解析页面元素内容; 基于数据库模式输出解析到结构化数据; 对于个别复杂类型AJAX页面定制判断页面加载完成的回调...

    htmlunit 及其 依赖包

    HTMLUnit是一个功能强大的Java库,它...通过理解这些依赖包的作用,你可以更好地利用HTMLUnit实现你的目标。在实践中,确保正确地导入这些jar文件,并参考`HtmlunitTest.java`中的示例代码,可以快速上手使用HTMLUnit。

    Htmlunit2.23-bin.zip

    HTMLUnit是一个强大的Java库,它模拟了一个无头Web浏览器,主要用于自动化测试和网页抓取。在版本2.23的zip文件中,我们主要关注HTMLUnit的核心功能和它如何帮助开发者处理HTML内容。 HTMLUnit的核心是基于Jakarta ...

    htmlunit依赖的所有jar

    通常,它会依赖`rhino-1.x.jar`,这是一个开源的JavaScript引擎,实现了ECMAScript标准。Rhino引擎使得HTMLUnit能够理解和运行JavaScript,这对于模拟浏览器行为至关重要。 5. **其他辅助库**: 还有一些其他辅助...

    htmlunit基本jar包

    HTMLUnit是一个Java库,它提供了一个无头浏览器模拟器,用于自动化Web页面的测试和交互。这个"htmlunit基本jar包"包含了运行HTMLUnit所需的所有核心组件,无需通过Maven来管理和依赖。这意味着用户可以直接在项目中...

    htmlUnit所需jar包

    HTMLUnit是一个Java库,它提供了一个无头浏览器模拟器,用于自动化Web页面的导航和交互。这个库在测试、数据抓取以及不需图形用户界面的场景中非常有用。"htmlUnit所需jar包"的标题表明这是一个包含HTMLUnit运行所需...

    htmlunit依赖jar包

    HTMLUnit是一款功能强大的Java库,它模拟了一个无头Web浏览器,允许开发者在没有真实浏览器环境的情况下执行JavaScript,处理Ajax请求,以及与网页进行交互。这个库对于自动化测试、数据抓取和网页爬虫项目非常有用...

    htmlunit java版无界面浏览器 网页自动登录

    htmlunit java版无界面浏览器 实现网页自动登录利器 官方最新下载 htmlunit 是一款开源的java 页面分析工具,读取页面后,可以有效的使用htmlunit分析页面上的内容。项目可以模拟浏览器运行,被誉为java浏览器的开源...

    htmlunit-2.36和htmlunit-2.50,包括关联文件

    HTMLUnit是Java编程语言中的一款无头Web浏览器库,它模拟了浏览器的行为,但不涉及图形用户界面。这个工具主要用于自动化测试和网络爬虫,因为它能够解析HTML、执行JavaScript,并与网页上的各种元素进行交互。在...

    htmlunit所需要jar包

    8. **commons-logging-1.1.1.jar**:Apache Commons Logging是一个日志抽象层,允许在不同的日志实现之间切换,如Log4j或Java内置的日志系统,这对于调试和监控HTMLUnit的行为很有帮助。 9. **xml-apis-1.3.04.jar*...

    htmlunit-2.3..zip

    3. JavaScript引擎(如rhino.jar):HTMLUnit使用Rhino引擎来执行JavaScript代码,这是一个开源的JavaScript实现,能够在Java环境中运行。 4. 可能还包括其他辅助库,如httpclient和httpcore,用于处理HTTP请求和...

    htmlunit参考文档

    除了官方的API文档,开发者还可以参考HTMLUnit的源码,理解其内部实现机制。此外,社区论坛、Stack Overflow等平台上的相关问题和解答也是学习的好资源。在实践中不断尝试和调试,将有助于你更好地掌握HTMLUnit的...

    htmlunit-2.1.5源码

    HTMLUnit是一个Java库,它模拟了一个无头Web浏览器,用于自动化网页测试和...此外,这个源码包也适合那些希望学习Java编程和理解浏览器工作原理的初学者,因为HTMLUnit提供了一个简化版的浏览器实现,便于学习和研究。

    htmlunit-2.14

    HTMLUnit是一个Java库,它提供了一个无头浏览器模拟器,用于自动化Web页面的测试和抓取。这个库的核心功能是能够解析、渲染和执行JavaScript,从而使得开发者可以在没有实际浏览器环境的情况下,对网页进行功能测试...

    htmlunit-2.19-bin

    HTMLUnit是一个基于Java的无头Web客户端库,它模拟了一个完整的浏览器,但不涉及实际的图形用户界面。...开发者可以通过解压这个压缩包,导入相应的JAR文件到项目中,然后利用提供的API来实现各种网页操作。

    htmlunit模拟cookie登录

    htmlunit 模拟cookie 存取 cookie值登录 如: wsyyuser.xywy.com Cookie c = new Cookie("wsyyuser.xywy.com", "PHPSESSID", Common.getValue("session_id") );

    htmlunit-2.20.zip

    2. **JavaScript支持**:HTMLUnit可以解析和执行JavaScript代码,这对于现代Web应用来说是至关重要的,因为许多动态网页依赖JavaScript来加载内容和实现交互。 3. **DOM操作**:通过HTMLUnit提供的API,开发者可以...

    com.gargoylesoftware.htmlunit-2.29所需包

    1. **导入依赖**:将HTMLUnit及其依赖库添加到项目的类路径中,如果是Maven或Gradle项目,可以通过添加对应的依赖配置来实现。 2. **初始化WebClient**:创建`WebClient`实例,并根据需求设置各种配置,如浏览器版本...

    htmlunit用到的jar包

    HTMLUnit是一个Java库,它提供了一个无头浏览器模拟器,用于自动化Web页面的测试和抓取。这个库允许开发者在不依赖于实际图形用户界面(GUI)的情况下与HTML页面进行交互,例如点击链接、填写表单和执行JavaScript。...

Global site tag (gtag.js) - Google Analytics