htmlparser操作bean类提取html页面元素

HtmlParser对Visitor和Filter的方法进行了封装,定义了针对一些常用html元素操作的bean,简化对常用元素的提取操作。包括:FilterBean、HTMLLinkBean、HTMLTextBean、LinkBean、StringBean、BeanyBaby等。这里给出LinKBean和StringBean的源码:

1、LinkBean代码

import java.net.URL;
import java.util.HashSet;
import java.util.Set;

import org.htmlparser.Node;
import org.htmlparser.NodeFilter;
import org.htmlparser.Parser;
import org.htmlparser.beans.LinkBean;
import org.htmlparser.filters.NodeClassFilter;
import org.htmlparser.filters.OrFilter;
import org.htmlparser.tags.ImageTag;
import org.htmlparser.tags.LinkTag;
import org.htmlparser.util.NodeList;
import org.htmlparser.util.ParserException;

public class UrlFilter {
	//LinkBean类使用  
    public  Set<String> LinkBean(String src,String urlFilters) throws Exception {  
    	Set<String> links = new HashSet<String>();
    	LinkBean linkBean = new LinkBean();  
        linkBean.setURL(src);  
        URL[] urls = linkBean.getLinks();  
        for (int i = 0; i < urls.length; i++) { 
           String url=urls[i].toString();
           String[] UrlFilters=urlFilters.trim().split(",");
           for (String urlFilter : UrlFilters)
		if(url.startsWith(urlFilter)) links.add(url);
        }  
        return links;
    }  
	
	public static void main(String[]args) throws Exception{
		UrlFilter uf=new UrlFilter();
		String strUrlFilters="https://www.rizhiyi.com";
		Set<String> links=uf.LinkBean("https://www.rizhiyi.com/",strUrlFilters);
		for(String link:links)
			System.out.println(link);
	}
}

2、StringBean代码

import java.net.URL;
import org.htmlparser.Node;
import org.htmlparser.Parser;
import org.htmlparser.beans.StringBean;
import org.htmlparser.util.NodeList;
import org.htmlparser.util.ParserException;
import org.htmlparser.util.SimpleNodeIterator;

import sp.SslUtils;

public class UrlParser {
     * 根据提供的URL,获取此URL对应网页的纯文本信息 
     * @param url 提供的URL链接 
     * @return RL对应网页的纯文本信息 
	 * @throws Exception 
     */  
    public String getText(String url)throws Exception{  
		StringBean sb = new StringBean ();
		sb.setLinks (false);
		sb.setReplaceNonBreakingSpaces(true);
		sb.setCollapse(true);
		Parser parser = new Parser (url);
		parser.setEncoding("UTF-8");
		parser.reset ();
		parser.visitAllNodesWith (sb);
		String text = sb.getStrings ();
        return text;  
    }  
    
	public static void main(String[]args) throws Exception{
		UrlParser fd=new UrlParser();
		try {
			String str=fd.getText("https://www.rizhiyi.com/");
			System.out.println(str);
		} catch (ParserException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值