`
eyeName
  • 浏览: 6060 次
  • 性别: Icon_minigender_1
  • 来自: 西安
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

如何使用Java提取html表单元素

阅读更多
    最近要用到Java提取html表单元素,学习使用htmlparser提取表单元素的一些简单常用的方法,在此总结一下!

第一步:读取指定的html文件

public static String ReadFile(String filepaths) throws IOException, ParserException
{
InputStreamReader istrem=null;
File file=new File(filepaths);
String readStr="";
try {
   istrem=new InputStreamReader(new FileInputStream(file),"unicode");
   BufferedReader iread=new BufferedReader(istrem);
   while(null!=(readStr=iread.readLine()))
   {
//      System.out.println(readStr);
    filepaths+=readStr.toString();
   }
} catch (FileNotFoundException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
}
return filepaths;
}

第二步:下载辅助工具包htmllexer.jar   htmlparser.jar导入项目

第三步:定义类要获取的信息

eg:public class InputT {

private String id;
    private String name;
    private String onkeydown;
    private String poppding;

//将其属性封装

}

第四步:将其存入map中

public class MapCollection {

public String id;
private InputT input;
Map<String,InputT> IMap=new HashMap<String, InputT>();
//以次将要用的的类封装到map中以便以后调用

public Map<String, InputT> getIMap() {
IMap.put(id,input);
return IMap;
}
public void setIMap(Map<String, InputT> iMap) {
IMap = iMap;
}


}
}


第五步:获取想要的信息

package com.text;

import java.util.HashMap;
import java.util.Map;
import org.htmlparser.NodeFilter;
import org.htmlparser.filters.TagNameFilter;
import org.htmlparser.tags.Div;
import org.htmlparser.tags.ImageTag;
import org.htmlparser.tags.InputTag;
import org.htmlparser.tags.LinkTag;
import org.htmlparser.tags.SelectTag;
import org.htmlparser.tags.TextareaTag;
import org.htmlparser.util.NodeList;

public class SplitToHtml {

MapCollection mc=new MapCollection();
    Map<String,Button> map= mc.getMap();   
Map<String,SelectT> Smap=new HashMap<String,SelectT>();
    Map<String,RiliT> Rmap=mc.getRmap();
    Map<String,InputT> input=mc.getIMap();
    Map<String,Inputdown> inputDw=mc.getIDmap();
    Map<String,Image> ImgMap=mc.getImgMap();
    Map<String,TextAreaT> TAMap=mc.getTAMap();
    Map<String,Divs> divMap=mc.getDivMap();
    Map<String,Alink> AMap=mc.getAMap();
   
    public void getSpitInput(String cssandtitle) //分隔文本框
    {
NodeFilter filter=new TagNameFilter("input"); //设置过滤器
        NodeList nodelt=Parsers.getParsers(cssandtitle).extractAllNodesThatMatch(filter,true); //节点列表中的匹配filter的节点
        System.out.println("匹配节点个数:"+nodelt.size());
        InputTag link=null;
        for(int i=0;i<nodelt.size();i++)
        {
         link=(InputTag) nodelt.elementAt(i);
         String id=link.getAttribute("id");             //获取熟悉值
      String onclick = link.getAttribute("onclick");      //获取熟悉值
   String ponding = link.getAttribute("PropBindings");     //获取熟悉值
   String name = link.getAttribute("name");               //获取熟悉值
   String onkeydown = link.getAttribute("onkeydown");      //获取熟悉值
   String type = link.getAttribute("type");                //获取熟悉值
   String expression=link.getAttribute("expression");      //获取表达式值
            if(onclick!=null&&ponding==null&&expression!=null) //判断按钮
            {
             Button bt=new Button();
             bt.setExpression(expression);
                bt.setId(id);
             bt.setName(name);
             bt.setOnclick(onclick);
                String ids=bt.getId();
               link.setAttribute("id","<<<<<<<<<<<<<<<<<<"); //修改文本框id的值为"<<<<<<<<<<<<<<<<<<"
               link.setAttribute("onclick", "__________________"); //修改文本框的onclick事件为__________________
//                String str=nodelt.toHtml();
//                System.out.println("???????????????????????");
//                System.out.println(str);
//                System.out.println("???????????????????????");
             map.put(ids,bt);
            }
          if(onclick!=null&&ponding!=null){ //判断日历控件
                RiliT rt=new RiliT();
                rt.setId(id);
                   rt.setName(name);
                   rt.setOnclick(onclick);
                   String key=rt.getId();
                   Rmap.put(key,rt);
             }
           
            if(ponding!=null&&onkeydown==null&&onclick==null){//判断文本框
                InputT t = new InputT();
                   t.setId(id);
                   t.setName(name);
                   t.setPoppding(ponding);
                   String key=t.getId();
                   input.put(key, t);
            }
               if(ponding!=null&&onkeydown!=null){ //带回车事件的文本框
               
                Inputdown ind=new Inputdown();
                ind.setId(id);
                ind.setName(name);
                ind.setOnkeydown(onkeydown);
                String key=ind.getId();
                inputDw.put(key,ind);
               }
        }
    }
  

第六步:调用此方法

public static void main(String[] args) throws IOException, ParserException {

       String filepaths = "http://www.baidu.com/index.html";


        String cssandtitle=ReadFile(filepaths);
        SplitToHtml sph=new SplitToHtml();
       sph.getSplitToSelect(cssandtitle);
        }
分享到:
评论

相关推荐

    java、html使用文档API

    Jsoup是一个用于处理真实世界HTML的Java库,它提供了非常方便的API来解析、操作、提取和修改HTML数据。例如,你可以使用Jsoup来抓取网页上的特定元素,或者对HTML文档进行清理和格式化。 在描述中提到的"等使用文档...

    html5实现摄像头拍照并使用java进行照片保存

    在本文中,我们将深入探讨如何使用HTML5实现摄像头拍照功能,并结合Java技术将拍摄的照片保存到服务器。HTML5的WebRTC(Real-Time Communication)API为我们提供了访问用户设备摄像头的能力,而Java作为后端语言,...

    java html解析 工具jsoup和一个简单例子

    除了基本的元素选择,Jsoup还支持更复杂的操作,如遍历元素、修改元素属性、提取链接或表单数据等。例如,如果你想获取所有链接,可以这样做: ```java for (Element link : doc.select("a[href]")) { System.out....

    Java语言如何通过WSDL动态生成HTML,并且提交测试(附源码)

    以下是一个简单的代码示例,展示了如何使用CXF生成服务代理并创建HTML表单: ```java import org.apache.cxf.frontend.ClientProxyFactoryBean; import javax.jws.WebService; // 创建服务代理 ...

    xml自动调用数据库数据填写表单

    1. 动态生成:通过解析XML文档,动态生成HTML表单元素,根据XML中的数据填充表单字段。 2. 事件驱动:利用JavaScript或jQuery监听用户操作,当满足特定条件时,自动从XML数据中获取并填充表单。 3. 数据验证:在表单...

    百度贴吧java爬虫

    Java爬虫通常基于HTTP协议,使用Java的HttpURLConnection或者HttpClient库来发送HTTP请求,获取网页的HTML源代码。例如,`HttpURLConnection`是Java标准库中的类,可以方便地发起GET或POST请求;而`HttpClient`(如...

    基于java的HTML解析器 jsoup.zip

    在Java代码中,引入`org.jsoup.Jsoup`即可开始使用。 3. **解析HTML** - `connect()`: 用来创建一个`Connection`对象,可以设置HTTP请求参数,如URL、方法(GET或POST)、请求头等。 - `get()`: 发送GET请求并...

    Java爬虫Jsoup+httpclient获取动态生成的数据

    在Web开发和数据抓取领域,Java爬虫技术是实现网页自动化信息提取的重要手段。本文主要讲述如何利用Java编程语言中的Jsoup库和HttpClient工具包来获取和解析动态生成的数据,特别是那些通过JavaScript动态加载的数据...

    Java爬虫详细完整源码实例

    Java中常用的HTML解析库有Jsoup,它提供了一种简洁的API来解析HTML,查找和修改元素。 3. **正则表达式与XPath/CSS选择器**:这两者用于从HTML文档中提取特定的数据。正则表达式适合处理固定格式的数据,而XPath或...

    java+selenium(房天下 链家小区 多线程+代理实现)

    这个项目可能会使用如Jsoup这样的库来解析HTML,提取出小区名称、价格等关键信息。Jsoup提供了强大的CSS选择器功能,使得定位网页元素变得简单。 6. **异常处理与日志记录**: 在爬虫编程中,异常处理是必不可少的,...

    JAVA 模拟网页是登录

    2. **解析HTML**:使用JSOUP,我们可以加载登录页面的HTML文档,通过选择器找到表单元素。例如,我们可以使用`select("form")`找到表单,`select("#username")`找到用户名输入框,`select("#password")`找到密码...

    相册管理系统(Java表单+xml数据库存储).doc

    在`upload.jsp`中,定义了一个HTML表单,允许用户选择要上传的文件并填写描述。表单提交后,通过POST方法将数据发送到`UploadServlet`,这里使用了Apache Commons FileUpload库来处理多部分请求,将上传的文件保存到...

    Java中使用开源库JSoup解析HTML文件实例

    这个页面用一个名为login.html的文件表示,包含一些基本的HTML结构和表单元素。通过这个示例,我们可以展示如何使用JSoup来访问这个HTML文件,并且从中提取特定的元素、属性,甚至修改内容。 JSoup的使用方法通常...

    java网页抓取Jsoup包全

    在Java领域,Jsoup是一个非常流行的库,它提供了强大的功能来解析、操纵和提取HTML内容。Jsoup包全指的是包含所有必要组件的完整Jsoup集合,以确保能进行完整的网页抓取工作。 Jsoup的核心组件是`jsoup-1.8.1.jar`...

    java web开发基础知识整理

    通过使用标签,HTML可以创建文本、图像、链接、表格等各种元素,是所有Web页面的骨架。了解HTML的基本语法和标签对任何Web开发者来说都是必要的。 3. **JavaScript**:JavaScript是用于网页交互和动态效果的主要...

    java爬取各大平台价格

    在爬虫项目中,Jsoup通常用于从HTML源码中定位到目标价格元素,然后提取出价格数据。例如,我们可以使用CSS选择器找到包含价格的特定HTML标签,然后将其内容解析为数字。 3. **HttpClient**: Apache HttpClient是...

    java网络留言板

    在Java网络留言板中,HTML文件通常包含表单元素,如文本输入框、提交按钮等,供用户输入留言信息。例如,用户可以通过一个文本区域输入留言内容,选择是否匿名,然后点击提交按钮将数据发送到服务器。 Servlet是...

    简易版Java爬虫

    通过Jsoup,我们可以轻松地选取元素,提取数据,甚至修正HTML结构。例如,我们可以使用`connect()`方法建立到目标URL的连接,然后用`get()`获取HTML内容,接着通过CSS选择器来选取我们需要的数据。 Apache ...

    java爬虫爬取数据

    例如,可以使用Jsoup库,它是一个强大的库,能够方便地解析HTML文档,查找特定元素,甚至执行CSS选择器和JavaScript表达式。通过这些工具,我们能够提取网页上的链接、文本、图片等信息。 其次,多线程是提高爬虫...

    Jsoup代码解读之一概述Java开发Java经验技巧共3

    一旦选中元素,可以使用`text()`、`html()`、`attr()`等方法获取元素的文本、HTML内容或属性值。例如,`elem.text()`返回元素的纯文本,`elem.attr("href")`则获取链接地址。 4. **修改和操作DOM**: Jsoup允许在...

Global site tag (gtag.js) - Google Analytics