`
步青龙
  • 浏览: 298737 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
博客专栏
72ba33fb-eefe-3de1-bd65-82a6e579265d
Java面试
浏览量:0
社区版块
存档分类
最新评论

htmlparser应用

阅读更多

package com.util.md5;

import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.htmlparser.Node;
import org.htmlparser.NodeFilter;
import org.htmlparser.Parser;
import org.htmlparser.tags.ImageTag;
import org.htmlparser.tags.LinkTag;
import org.htmlparser.util.NodeList;
import org.htmlparser.util.ParserException;

import com.sun.corba.se.spi.orbutil.fsm.State;
/**
 *  用HTMLparser抓取img标签的路径
 * @author Administrator token@token.com
 * @param content:要爬取的文本
 * @return 返回SRC路径改为服务器路径的文本
 * @throws Exception:io异常
 */
public class Htmlparserutil {
	/**
	 * example : new Htmlparserutil().parserto("<img src = 'www.baidu.com'/><a><a/>","D:\test");
	 * @param contentString  要取img标签的内容
	 * @param pathString    要存到服务器的路径
	 */
	public static  String parserto(String contentString,String pathString,String dispPath)  {
		String  stringBuffer=null;
		try {
			List list = new ArrayList();
			Parser parser = Parser.createParser(contentString, "UTF-8");
				NodeList nodeList = parser
					.extractAllNodesThatMatch(new NodeFilter() {
						public boolean accept(Node node) {
							if (node instanceof ImageTag)// <img>标记
								return true;
							return false;
						}
					});
			for (int i = 0; i < nodeList.size(); i++) {
				ImageTag n = (ImageTag) nodeList.elementAt(i);
				list.add(n.getImageURL());
				int start = 0;
				start = n.getImageURL().lastIndexOf("/");
				String picname=n.getImageURL().substring(start,n.getImageURL().length());
				contentString=contentString.replace(n.getImageURL(), dispPath+picname);
				///////////////?????????
				if(n.getImageURL().indexOf("http://e.huisou.com")==1){
					contentString.replace("http://e.huisou.com","http://img.e.huisou.com");
				}
			}
			List<String> listImg = new ArrayList<String>();
			listImg.add(".jpg");
			listImg.add(".JPG");
			listImg.add(".jpeg");
			listImg.add(".JPEG");
			listImg.add(".bmp");
			listImg.add(".BMP");
			listImg.add(".gif");
			listImg.add(".GIF");
			listImg.add(".png");
			listImg.add(".PNG");
			Iterator ite = list.iterator();
			while (ite.hasNext()) {
				String content = (String) ite.next();
				for (int i = 0; i < listImg.size(); i++) {
					if (content.contains(listImg.get(i))) {
						content = content.substring(0, content.indexOf(listImg
								.get(i))
								+ listImg.get(i).length());	
					}
				}
				URL u = new URL(content);
				URLConnection uc = u.openConnection();
				InputStream in = uc.getInputStream();
				String name = content.substring(content.lastIndexOf("/") + 1,
						content.length());
				OutputStream out = new FileOutputStream(pathString + name);
				byte[] buffer = new byte[1024];
				while (in.read(buffer) > 0) {
					out.write(buffer);
				}
				out.flush();
				out.close();
				in.close();
			}
		} catch (Exception e) {
		}
		return contentString;
	}
	/**
	 * 替换文本标签迭代
	 * @param contentString
	 * @return
	 * @throws ParserException
	 */
	public static  String parserto(String contentString) throws ParserException  {
		
		try {
			Parser parser = Parser.createParser(contentString, "UTF-8");
				NodeList nodeList = parser
					.extractAllNodesThatMatch(new NodeFilter() {
						public boolean accept(Node node) {
							if (node instanceof LinkTag)//
								return true;
							return false;
						}
					});
			for (int i = 0; i < nodeList.size(); i++) {
				LinkTag n = (LinkTag) nodeList.elementAt(i);
//			
				contentString=contentString.replace(n.toHtml().toString(),n.getLinkText());
			}
		} catch (Exception e) {
		}
		return contentString;
	}
	
	
	
	public static  String updateurl(String contentString)  {
			Parser parser = Parser.createParser(contentString, "UTF-8");
				NodeList nodeList = null;
				try {
					nodeList = parser
						.extractAllNodesThatMatch(new NodeFilter() {
							public boolean accept(Node node) {
								if (node instanceof ImageTag)
									return true;
								return false;
							}
					});
				} catch (ParserException e) {
					e.printStackTrace();
				}
			for (int i = 0; i < nodeList.size(); i++) {
				ImageTag n = (ImageTag) nodeList.elementAt(i);
				if (n.getImageURL().indexOf("http://e.huisou.com")==1) {
					System.out.println("start");
					contentString=contentString.replace(n.getImageURL().substring("http://e.huisou.com".length()),"http://img.e.huisou.com");
					System.out.println("end");
				}else{
					System.out.println("为找到外网的图片");
				}
			}
		return contentString;
	}
	 
	
}


 
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    HtmlParser

    它广泛应用于搜索引擎优化、数据分析、市场研究等多个领域。 在Python中,HTMLParser是内置的HTML解析器,它允许开发者编写自定义的事件驱动的解析器来处理HTML或XML文档。使用HTMLParser,我们可以解析网页内容,...

    HTMLParser.net源代码HTMLParser.net使用demo

    本项目名为"HTMLParser.net源代码HTMLParser.net使用demo",显然是一个包含示例代码的压缩包,用于展示如何在实际应用中使用HTMLParser.net。 HTMLParser.net的核心功能包括: 1. **HTML解析**:它能够将HTML字符...

    htmlparser.jar文件

    HTMLParser提供了多种方法来访问和操作解析树,比如`parseContent()`用于获取整个文档的节点列表,`visitAllNodesWith()`可以遍历所有节点并应用自定义的访问器,`getFirstNodeWithTag()`用于找到第一个特定标签的...

    Winista.Htmlparser.Net 源码 +Demo

    HtmlParser在多种场景下都有广泛的应用: 1. **数据抓取**:从网页中抓取特定信息,如产品价格、评论内容等。 2. **网页自动化**:用于自动填写表单、点击按钮等操作,实现网页自动化测试。 3. **内容过滤**:清理...

    htmlparser网页分析

    5. 应用场景:HTMLParser适用于数据抓取、网页自动化测试、内容过滤等多种场景。比如,你可以使用它来提取网页上的特定数据,如价格、评论、链接等;也可以用于验证网页的结构是否符合预期,或者在不影响页面展示的...

    htmlparser库与教程

    实际应用中,HTMLParser常与网络请求库(如Apache HttpClient或OkHttp)结合使用,以获取远程网页内容,再进行后续的解析操作。同时,为了提高代码的可维护性和复用性,建议封装自己的数据抓取和处理模块。

    htmlparser1.6最新版

    本文将深入探讨HTMLParser 1.6版本的功能、用途、使用方法以及其在IT领域的应用。 HTMLParser的核心功能是解析HTML文档,即使在面对结构不规则或者非标准的HTML代码时,也能有效地进行解析。它提供了灵活的事件驱动...

    HtmlParser源码及demo

    9. **编译与构建输出**:`.settings`目录存储了项目的特定构建设置,而`bin`目录通常包含由编译器生成的字节码文件(.class),这是Java应用程序运行所需的。 10. **示例文件(如delete_me.html)**:这个文件可能...

    htmlParser.jar包

    在实际应用中,HTMLParser通常与其他技术结合使用,例如与网络请求库(如Apache HttpClient或OkHttp)配合,从远程服务器获取HTML内容;或者与数据存储库(如MySQL、MongoDB)集成,将解析后的数据保存到数据库中。...

    HtmlParser 2.1 码源

    HtmlParser常用于网页抓取、数据分析、自动化测试等领域,如爬虫程序提取网页信息、Web应用程序验证HTML输入的有效性等。 9. **与其他库的比较** 相比于Jsoup等其他HTML解析库,HtmlParser更注重灵活性和低级控制...

    HtmlParser2003 应用

    **HtmlParser2003应用详解** 在网页信息抓取和处理领域,`HtmlParser2003`是一个重要的工具,它专为解析HTML代码设计,帮助用户从网页中提取所需的数据。本篇将深入探讨`HtmlParser2003`的原理、使用方法以及在实际...

    htmlparser的jar包

    总的来说,HTMLParser是一个强大且灵活的工具,适用于需要解析和操作HTML的Java应用,如爬虫、数据提取、网页自动化等场景。通过理解这两个jar包的功能和交互,我们可以有效地利用HTMLParser来处理复杂的HTML解析...

    解析htmlparser的所有jar包

    在实际应用中,你可能需要将HTMLParser用于以下场景: - **数据抓取**:从网页中提取结构化信息,例如产品价格、评论、联系方式等。 - **内容清理**:去除HTML中的广告、脚本等不必要内容,以准备进行进一步的处理...

    htmlparser2.0_dll+htmlparserAPI

    `HTMLParser-2[1].0-API.CHM`文件是HTMLParser2.0的API参考手册,它包含了详细的API文档,为开发者提供了如何使用这个库的指南。通过这个手册,开发者可以学习如何创建解析器实例,设置解析选项,注册事件处理器,...

    HTMLParser 使用举例

    此外,HTMLParser 还使用到了几种好的设计模式,应用恰到好处,值得学习和借鉴。 下面是一个简单的 HTMLParser 使用举例: ```java package com.amigo.htmlparser; import java.io.*; import java.net.URL; ...

    Winista.HtmlParser(含帮助手册)

    下面将详细阐述Winista.HtmlParser的相关知识点。 1. **HTML解析原理**: HTML解析器的工作原理是对HTML源码进行分析,识别出标签、属性、文本等内容。Winista.HtmlParser可能采用了基于DOM(文档对象模型)或SAX...

    C# HTMLParser下载.rar

    《C# HTMLParser详解及其应用》 在编程领域,处理HTML文档是一项常见的任务,尤其是在Web开发中。C#作为微软推出的面向对象的编程语言,拥有丰富的库和工具来支持这项工作。本文将深入探讨C#中的HTMLParser,以及...

    HtmlParser源码及其jar包

    此外,它还支持XML和SGML,扩展了其应用范围。 在提供的压缩文件中,有两个版本: - `htmlparser1_6_20060610.zip`:这是HTMLParser的一个较早版本,发布于2006年6月10日。它可能包含旧版API和特性,对于需要兼容...

    JAVA htmlparser 使用实例

    ### JAVA HtmlParser 使用实例详解 在Java开发过程中,解析HTML文档是一项常见的需求,尤其是在处理Web爬虫、数据抓取等应用场景时。`HtmlParser`库为开发者提供了一种简便的方式来解析HTML文档,并从中提取所需的...

Global site tag (gtag.js) - Google Analytics