闲着无聊用cyberneko和dom4j写了个解析html图片的小程序,在这里贴出主要代码如下
public void testPaseHtml(){
String url = "http://www.iteye.com/";
Document document = this.getDoc(url);//获取document
String gz = "//xmlns:IMG/@src";//xpath匹配
List nodes = this.getAttr(document,gz);//获取属性
String[] photoUrl = this.getUrl(nodes);//获取url
this.insertPhoto(this.getConn(),photoUrl);//插入图片
}
/**
* 获取属性
* @param document
* @param gz
* @return
*/
public List getAttr(Document document,String gz){
Map nameSpaces=new HashMap();
XPath xpath=new DefaultXPath(gz);
nameSpaces.put("xmlns","http://www.w3.org/1999/xhtml");
xpath.setNamespaceContext(new SimpleNamespaceContext(nameSpaces));
List nodes=xpath.selectNodes(document);
return nodes;
}
/**
* 获取Document
* @param url
* @return
*/
public Document getDoc(String url){
DOMParser parser = new DOMParser();
try {
parser.parse(url);
} catch (SAXException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
org.w3c.dom.Document doc=parser.getDocument();
//SAXReader reader = new SAXReader();
DOMReader domReader=new DOMReader();
Document document =domReader.read(doc);
return document;
}
/**
* 获取图片路径
* @param nodes
* @return
*/
public String[] getUrl(List nodes){
if(nodes==null){
return null;
}
Iterator iter=nodes.iterator();
String[] url = new String[nodes.size()];
for(int i=0;iter.hasNext();i++){
Attribute attribute=(Attribute)iter.next();
url[i] = attribute.getValue();
}
return url;
}
/**
* 获取图片流
* @param path
* @return
*/
public InputStream getInput(String path){
URL url = null;
try {
url = new URL(path);
} catch (MalformedURLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
URLConnection conn = null;
try {
conn = url.openConnection();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
conn.setDoOutput(true);
InputStream inputStream = null;
try {
inputStream = conn.getInputStream();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return inputStream;
}
/**
* 插入图片入数据库
* @param conn
* @param photoUrl
*/
public void insertPhoto(Connection conn,String[] photoUrl){
String sql = "insert into photo set photo = ?";
PreparedStatement ps;
try {
conn.setAutoCommit(false);
ps = conn.prepareStatement(sql);
for(int i=0;i<photoUrl.length;i++){
if("".equals(photoUrl[i]))continue;
InputStream inputStream = this.getInput("http://www.iteye.com/"+photoUrl[i]);
ps.setBinaryStream(1, inputStream, inputStream.available());
ps.addBatch();
inputStream.close();
}
ps.executeBatch();
conn.commit();
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
分享到:
相关推荐
包中的DOM和SAX解析器类。这些类提供了一个更直接的方式来创建和使用HTML解析器,它们都依赖于`HTMLConfiguration`类。这使得你可以像处理XML文档一样,使用标准的XML接口来操作解析后的HTML内容。 以下是一个示例...
3. **可扩展性**:由于其基于Java,NekoHTML可以轻松集成到其他Java项目中,且与其他Java XML处理库(如JDOM、DOM4J等)兼容,提供了丰富的API供开发者扩展和定制。 4. **安全分析**:NekoHTML在解析过程中可以过滤...
UI框架对canvas进行分层 1.base为基础层,放基础界面,主游戏菜单、操作杆、小地图等; 2.main为主业务层,放全部业务界面,背包、榜单等 3.toast层,放吐司 4.loading层,放loading界面 使用方式: 1.在场景中挂上UIManager脚本,并在游戏启动时进行初始化,传入资源加载器 2.显示界面直接UIManager.ShowPanel<T>(),不需要其他操作 3.隐藏界面UIManager.ClosePanel()
IMG_1399.PNG
【毕业设计】java-springboot-vue教师工作量管理系统实现源码(完整前后端+mysql+说明文档+LunW).zip
python教程学习
【深圳来觅数据信息科技-2025研报】减产提价!多重因素影响,国内存储芯片逐步崛起.pdf
python学习资源
本协力服装厂服装生产管理系统设计目标是实现协力服装厂服装生产的信息化管理,提高管理效率,使得协力服装厂服装生产管理作规范化、科学化、高效化。 本文重点阐述了协力服装厂服装生产管理系统的开发过程,以实际运用为开发背景,基于Springboot框架,运用了Java编程语言和MYSQL数据库进行开发,充分保证系统的安全性和稳定性。本系统界面良好,操作简单方便,通过系统概述、系统分析、系统设计、数据库设计、系统测试这几个部分,详细的说明了系统的开发过程,最后并对整个开发过程进行了总结,实现了服装生产相关信息管理的重要功能。 本协力服装厂服装生产管理系统运行效果稳定,操作方便、快捷,界面友好,是一个功能全面、实用性好、安全性高,并具有良好的可扩展性、可维护性的服装生产管理平台。 关键词:服装生产管理,Java编程语言,Springboot框架,MYSQL数据库
网络编程,资源和大家上学的时候的差不多,tcp
vmware虚拟机安装教程
【毕业设计】java-springboot-vue教师人事档案管理系统实现源码(完整前后端+mysql+说明文档+LunW).zip
【毕业设计-java】springboot-vue会员制医疗预约服务管理系统实现源码(完整前后端+mysql+说明文档+LunW).zip
比赛前开源题目
UniApp开发一个简单的记事本应用文字教程
内容概要:本文档详细介绍了C#编程语言的基础知识和高级特性的相关内容。首先阐述了C#语言的特点和应用场景,涵盖其简单、安全及面向对象三大优点。接着讲述了准备工作的关键步骤,重点提及了开发工具Visual Studio的安装以及推荐的经典书籍和学习资源。文档深入解析了C#基础语法的各个要素,包括数据类型、变量与常量、运算符、控制结构,并结合代码实例强化理解。面向对象编程部分,文档讲解了类与对象的概念,以及继承、多态和封装的原则,并附带具体示例说明,以便读者更容易理解面向对象的理念。此外,文档对比了.NET Framework和.NET Core两大框架的区别和优势,并介绍了一些常用的类库,使开发者在不同平台环境下都可以顺利开发高质量的软件。最后一章提供了一些建议和资源推荐,如参与开源项目、加入技术社区等,为学习者的成长之路指明方向。 适合人群:希望初次接触C#编程的人士、希望通过系统学习达到掌握C#的初级开发者,亦适用于有一定C#经验,想巩固和提升面向对象思想及相关技术的专业技术人员。 使用场景及目标:该文章可以帮助初学者建立完整的C#编程基础框架,快速上手机编程,并引导他们深入了解面向
仅供资料参考,YeeCOM移讯通DTU连接OneNet平台MQTT说明使用手册。
python学习一些项目和资源
python学习资源
【毕业设计-java】springboot-vue家具销售电商平台实现源码(完整前后端+mysql+说明文档+LunW).zip