⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 htmlparserextraction.java

📁 《lucene+nutch搜索引擎开发》源代码
💻 JAVA
字号:
package chapter9;

import org.htmlparser.util.*;
import org.htmlparser.Parser;
import org.htmlparser.filters.*;
import org.htmlparser.tags.LinkTag;
import org.htmlparser.NodeFilter;
import org.htmlparser.nodes.TextNode;
import org.htmlparser.lexer.*;
import org.htmlparser.lexer.Stream;
import org.htmlparser.Node;
import java.io.*;
import java.net.*;

import org.htmlparser.http.ConnectionManager;
import org.htmlparser.visitors.TextExtractingVisitor;
import org.htmlparser.filters.TagNameFilter;
import org.htmlparser.filters.HasSiblingFilter;

import org.htmlparser.util.ParserException;


public class HtmlParserExtraction {

	  public static void main (String[] args) throws ParserException
	  {
		  
		  try {
  
			  //ParseHtmlText("http://www.bnu.edu.cn/","GB2312");
			  //getHtmlUrls("http://www.bnu.edu.cn/","GB2312");
			  //getBaiduUrls("http://www.baidu.com/s?lm=0&si=&rn=10&ie=gb2312&ct=0&wd=Lucene&pn=0&ver=0&cl=3","GB2312");
			  
			  getLexerUrls("http://www.bnu.edu.cn/","GB2312");
		  } catch(ParserException e)
		  {
			  e.printStackTrace();
		  }
		  
 	  }
	  
	  
	  public static void getLexerUrls(String url , String pageEncoding) throws ParserException
	  { 
		Node node = null;
		Lexer lexer = null;
		
		try { 		
			
			ConnectionManager connmgr;
			 
			connmgr = Page.getConnectionManager();           // 生成链接管理器
		    lexer = new Lexer(connmgr.openConnection(url));  // 生成分析器
		    
		    lexer.getPage().setEncoding(pageEncoding);       // 设置网页编码
				   
			node = lexer.nextNode();
			while(node != null ) {                           // 循环遍历每个节点
			   System.out.println(node.toString());
			   node = lexer.nextNode();
			   
		 	}	
		} catch (ParserException e) { 
			   e.printStackTrace();
		 }
	  }
	  
	  public static void getHtmlUrls(String url , String pageEncoding)  throws ParserException
	  { 
		  NodeList nodeList = null;
		  
		  try { 
			   Parser parser = new Parser(url);
		       parser.setEncoding(pageEncoding);                            // 设置解析编码格式
			   // 可以使用下面filter来取出url连接
			    //nodeList = parser.parse(new TagNameFilter("A"));          // 使用TagNameFilter
			   nodeList = parser.parse(new NodeClassFilter(LinkTag.class)); // 使用NodeClassFilter
			   } catch (ParserException e) { 
				   e.printStackTrace();
			   }
			   
			  if(nodeList != null && nodeList.size() > 0) {                 // 循环遍历每个Url节点
				   for(int i = 0; i < nodeList.size(); i ++) {
					   String urlLink = ((LinkTag)nodeList.elementAt(i)).extractLink();
					   String LinkName = ((LinkTag)nodeList.elementAt(i)).getLinkText();
					   
					   if( urlLink.indexOf("bnu") == 0 || urlLink.indexOf("http") == 0 )
						   //System.out.println(LinkName +" : "+ urlLink);
						   System.out.println( urlLink );
				    }
			  }		  
  
	  }
		  	  
	  public static void getBaiduUrls(String url , String pageEncoding)  throws ParserException
	  { 
		  NodeList nodeList = null;
		  try { 
			   Parser parser = new Parser(url);
		       parser.setEncoding(pageEncoding);                            // 设置解析编码格式
			   // Baidu 检索结果的url连接和标题
		       nodeList = parser.parse( new AndFilter( new HasAttributeFilter("target") , 
		    		                                   new HasAttributeFilter("onclick")));
			   } catch (ParserException e) { 
				   e.printStackTrace();
			   }
			  if(nodeList != null && nodeList.size() > 0) {                 // 循环遍历每个Url节点
				   for(int i = 0; i < nodeList.size(); i ++) {
					   String urlLink = ((LinkTag)nodeList.elementAt(i)).extractLink();
					   String LinkName = ((LinkTag)nodeList.elementAt(i)).getLinkText();
					   
					   if( urlLink.indexOf("bnu") == 0 || urlLink.indexOf("http") == 0 )
						   System.out.println("结果 "+ i +" 标题:"+LinkName);
						   System.out.println("       链接:"+urlLink );
				    }
			  }
	  }
	  
	  public static void ParseHtmlText(String url,String pageEncoding)  throws ParserException
	  {
	          Parser parser = new Parser(url);                              // 访问目标网站
	          parser.setEncoding(pageEncoding);                             // 设置解析编码格式

	          TextExtractingVisitor visitor = new TextExtractingVisitor (); // 生成文本内容抽取对象 
	          
	          NodeFilter textFilter = new NodeClassFilter(TextNode.class);  // 生成文本过滤器
	          
	          NodeList nodes = parser.extractAllNodesThatMatch(textFilter); // 利用文本过滤器解析文档

	          for (int i = 0; i < nodes.size(); i++)
	          {
	              TextNode textnode = (TextNode) nodes.elementAt(i);        // 获取文本节点
	              String line = textnode.toPlainTextString().trim();        // 转换成纯文本
	              if (line.equals("")) continue;
	              System.out.println(line);
	          }
	          
	          parser.visitAllNodesWith (visitor);                           // 访问网页所有节点 
	          System.out.println(visitor.getExtractedText());               // 输出网页正文

	  }

}	 	  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -