最近要用到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);
}
分享到:
相关推荐
Jsoup是一个用于处理真实世界HTML的Java库,它提供了非常方便的API来解析、操作、提取和修改HTML数据。例如,你可以使用Jsoup来抓取网页上的特定元素,或者对HTML文档进行清理和格式化。 在描述中提到的"等使用文档...
在本文中,我们将深入探讨如何使用HTML5实现摄像头拍照功能,并结合Java技术将拍摄的照片保存到服务器。HTML5的WebRTC(Real-Time Communication)API为我们提供了访问用户设备摄像头的能力,而Java作为后端语言,...
除了基本的元素选择,Jsoup还支持更复杂的操作,如遍历元素、修改元素属性、提取链接或表单数据等。例如,如果你想获取所有链接,可以这样做: ```java for (Element link : doc.select("a[href]")) { System.out....
以下是一个简单的代码示例,展示了如何使用CXF生成服务代理并创建HTML表单: ```java import org.apache.cxf.frontend.ClientProxyFactoryBean; import javax.jws.WebService; // 创建服务代理 ...
1. 动态生成:通过解析XML文档,动态生成HTML表单元素,根据XML中的数据填充表单字段。 2. 事件驱动:利用JavaScript或jQuery监听用户操作,当满足特定条件时,自动从XML数据中获取并填充表单。 3. 数据验证:在表单...
Java爬虫通常基于HTTP协议,使用Java的HttpURLConnection或者HttpClient库来发送HTTP请求,获取网页的HTML源代码。例如,`HttpURLConnection`是Java标准库中的类,可以方便地发起GET或POST请求;而`HttpClient`(如...
在Java代码中,引入`org.jsoup.Jsoup`即可开始使用。 3. **解析HTML** - `connect()`: 用来创建一个`Connection`对象,可以设置HTTP请求参数,如URL、方法(GET或POST)、请求头等。 - `get()`: 发送GET请求并...
在Web开发和数据抓取领域,Java爬虫技术是实现网页自动化信息提取的重要手段。本文主要讲述如何利用Java编程语言中的Jsoup库和HttpClient工具包来获取和解析动态生成的数据,特别是那些通过JavaScript动态加载的数据...
Java中常用的HTML解析库有Jsoup,它提供了一种简洁的API来解析HTML,查找和修改元素。 3. **正则表达式与XPath/CSS选择器**:这两者用于从HTML文档中提取特定的数据。正则表达式适合处理固定格式的数据,而XPath或...
这个项目可能会使用如Jsoup这样的库来解析HTML,提取出小区名称、价格等关键信息。Jsoup提供了强大的CSS选择器功能,使得定位网页元素变得简单。 6. **异常处理与日志记录**: 在爬虫编程中,异常处理是必不可少的,...
2. **解析HTML**:使用JSOUP,我们可以加载登录页面的HTML文档,通过选择器找到表单元素。例如,我们可以使用`select("form")`找到表单,`select("#username")`找到用户名输入框,`select("#password")`找到密码...
在`upload.jsp`中,定义了一个HTML表单,允许用户选择要上传的文件并填写描述。表单提交后,通过POST方法将数据发送到`UploadServlet`,这里使用了Apache Commons FileUpload库来处理多部分请求,将上传的文件保存到...
这个页面用一个名为login.html的文件表示,包含一些基本的HTML结构和表单元素。通过这个示例,我们可以展示如何使用JSoup来访问这个HTML文件,并且从中提取特定的元素、属性,甚至修改内容。 JSoup的使用方法通常...
在Java领域,Jsoup是一个非常流行的库,它提供了强大的功能来解析、操纵和提取HTML内容。Jsoup包全指的是包含所有必要组件的完整Jsoup集合,以确保能进行完整的网页抓取工作。 Jsoup的核心组件是`jsoup-1.8.1.jar`...
通过使用标签,HTML可以创建文本、图像、链接、表格等各种元素,是所有Web页面的骨架。了解HTML的基本语法和标签对任何Web开发者来说都是必要的。 3. **JavaScript**:JavaScript是用于网页交互和动态效果的主要...
在爬虫项目中,Jsoup通常用于从HTML源码中定位到目标价格元素,然后提取出价格数据。例如,我们可以使用CSS选择器找到包含价格的特定HTML标签,然后将其内容解析为数字。 3. **HttpClient**: Apache HttpClient是...
在Java网络留言板中,HTML文件通常包含表单元素,如文本输入框、提交按钮等,供用户输入留言信息。例如,用户可以通过一个文本区域输入留言内容,选择是否匿名,然后点击提交按钮将数据发送到服务器。 Servlet是...
通过Jsoup,我们可以轻松地选取元素,提取数据,甚至修正HTML结构。例如,我们可以使用`connect()`方法建立到目标URL的连接,然后用`get()`获取HTML内容,接着通过CSS选择器来选取我们需要的数据。 Apache ...
例如,可以使用Jsoup库,它是一个强大的库,能够方便地解析HTML文档,查找特定元素,甚至执行CSS选择器和JavaScript表达式。通过这些工具,我们能够提取网页上的链接、文本、图片等信息。 其次,多线程是提高爬虫...
一旦选中元素,可以使用`text()`、`html()`、`attr()`等方法获取元素的文本、HTML内容或属性值。例如,`elem.text()`返回元素的纯文本,`elem.attr("href")`则获取链接地址。 4. **修改和操作DOM**: Jsoup允许在...