`
步青龙
  • 浏览: 291615 次
  • 性别: 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

    htmlparser[1]是一个纯的java写的html(标准通用标记语言下的一个应用)解析的库,它不依赖于其它的java库文件,主要用于改造或 提取html。它能超高速解析html,而且不会出错。现在htmlparser最新版本为2.0。 毫不...

    htmlparser

    htmlparser [1] 是一个纯的java写的html(标准通用标记语言下的一个应用)解析的库,它不依赖于其它的java库文件,主要用于改造或提取html。

    HtmlParser2003 应用

    HtmlParser2003 应用,用于从一个页面上解析html代码,获取所需信息

    爬数据案例 httpclient htmlparser

    爬数据案例,二叉树典型案例,htmlparser读取html,httpclient实例应用,运用了迭代实现。

    使用 HttpClient 和 HtmlParser 实现简易爬虫

    这篇文章介绍了 HtmlParser 开源包和 HttpClient 开源包的使用,在此基础上实现了一个简易的网络爬虫 (Crawler),来说明如何使用 HtmlParser 根据需要处理 Internet 上的网页,以及如何使用 HttpClient 来简化 Get ...

    HTMLParser:GUI应用程序,可在MySQL中解析表和安全数据

    HTMLParser 版本1.0 GUI应用程序,可在MySQL中解析表和安全数据 用户需要密码才能运行应用程序。

    domutils:使用htmlparser2的DOM的实用程序

    企业版domutils 作为Tidelift订阅的一部分提供domutils以及数以千计的其他软件包正在与Tidelift合作,为您用于构建应用程序的开源依赖项提供商业支持和维护。 节省时间,降低风险并改善代码运行状况,同时向维护人员...

    在Android应用中使用HTMLParser便捷的解析html内容

    随着移动互联网的发展,更多的内容需要从传统...三种移动应用的优劣已经有很多文章进行比较,这里不再赘述。WebAPP,HybridAPP其最大的优点在于跨平台,对于控制开发者成本来说是不二选择,但其缺点也比较明显,其在

    Java使用HttpClient和HtmlParser实现的爬虫Demo.zip

    爬虫通常由搜索引擎、数据挖掘工具、监测系统等应用于网络数据抓取的场景。 爬虫的工作流程包括以下几个关键步骤: URL收集: 爬虫从一个或多个初始URL开始,递归或迭代地发现新的URL,构建一个URL队列。这些URL...

    htmlparser:用于从 Fotbal.cz 的数据创建 Excel 表格的工具。 不再工作 - Fotbal.cz 改变了它的网络结构,应该应用不同的解析!

    html解析器 用于从 Fotbal.cz 的数据创建 Excel 表格的工具

    HttpClient以及获取页面内容应用

    3HtmlParser 3.1简介 项目的管理档。 3.2使用HtmlPaser的开发步骤 (1)通过Parser类创建一个解释器 (2)创建Filter或者Visitor (3)使用parser根据filter或者visitor来取得所有符合条件的节点 (4)对节点内容...

    Java HTML parser-开源

    用于处理或解析HTML文档的Java API。 如果您的Java应用程序需要或希望能够处理HTML格式的某些文本,则可能会发现此API很有趣。

    JAVA学习的参考学习流程

    04 JAVA SE 环境搭建 --&gt; 基础程序 --&gt; 面向对象 --&gt; 应用开发 --&gt; 高级应用 --&gt; Java新特性 --&gt; JDBC 05 JAVA EE WEB HTML --&gt; JavaScript --&gt; JSP --&gt; JavaBean --&gt; DAO --&gt; Smartupload --&gt; Servlet --&gt; MVC 06 ...

    低清版 大型门户网站是这样炼成的.pdf

    2.3.2 struts 2应用基本开发步骤—搭建eportal应用 69 2.3.3 struts 2中集成fckeditor 80 2.3.4 struts 2中集成displaytag 83 2.4 struts 2国际化实现 85 2.4.1 web应用的中文本地化 85 2.4.2 struts 2应用的...

    HeroDrafter:分析网站数据以确定Dota游戏中的最佳英雄

    HTMLParser将网站处理成文档从html文档中删除所有脚本,注释和样式使用正则表达式解析html以提取表及其数据用于获取文档并将其解析为要在App中显示的数据的Main 跟踪用户选择哪个敌方英雄根据敌人的选择计算每个英雄...

    java网络蜘蛛源码发展套件

    HTMLParser HTMLTag HTTP HTTPSocket ISpiderReportable IWorkloadStorable Link Log Recognize RecognizeCountry RecognizeLink Spider SpiderInternalWorkload SpiderSQLWorkload ...

    Cheerio:专为服务器设计的核心jQuery的实现-开源

    Cheerio包装了parse5解析器,可以选择使用@ FB55宽容的htmlparser2。 Cheerio可以解析几乎任何HTML或XML文档。 Cheerio解析标记,并提供用于遍历/操纵结果数据结构的API。 它不像Web浏览器那样解释结果。 具体来说...

    Python编程入门经典

    15.6.2 HTMLParser 256 15.7 Python中可用的XML库 257 15.8 SAX的含义 257 15.8.1 基于流 258 15.8.2 事件驱动 258 15.8.3 DOM的含义 258 15.8.4 内存中访问 258 15.9 使用SAX或者DOM的 理由 259 15.9.1 能力权衡 ...

Global site tag (gtag.js) - Google Analytics