RadarSpecialSearchEngine.java
上传用户:cctqzzy
上传日期:2022-03-14
资源大小:12198k
文件大小:3k
源码类别:

搜索引擎

开发平台:

Java

  1. package chapter9;
  2. import java.io.*;
  3. import org.htmlparser.util.*;
  4. import org.htmlparser.Parser;
  5. import org.htmlparser.filters.*;
  6. import org.htmlparser.tags.LinkTag;
  7. import org.htmlparser.util.ParserException;
  8. public class RadarSpecialSearchEngine {
  9.   public static void main (String[] args) throws ParserException
  10.   {
  11.   try {
  12.   TravelWordTable("D:\workshop\docs\wordlist.txt");
  13.   } catch(Exception e)
  14.   {
  15.   e.printStackTrace();
  16.   }
  17.     }
  18.   
  19.   public static void TravelWordTable(String filename) throws IOException
  20.   {
  21.   try{
  22.     String buffer ;
  23.             FileWriter resultFile = null;
  24.             PrintWriter myFile = null;
  25.     
  26.     String dstfile = filename+ "_dsturl.txt" ;
  27.     File writefile = new File(dstfile);
  28.     if(!writefile.exists())
  29.             {
  30.              writefile.createNewFile();
  31.             }                 
  32.     resultFile=new FileWriter(writefile);
  33.             myFile = new PrintWriter(resultFile);
  34.             BufferedReader reader = new BufferedReader(new FileReader(filename));
  35.             while((buffer = reader.readLine())!=null)
  36.             {
  37.              String url = "http://www.baidu.com/s?lm=0&si=&rn=10&ie=gb2312&ct=0&wd=" + buffer + "&pn=0&ver=0&cl=3";
  38.              getBaiduUrls(url,"GB2312",myFile);
  39.             }
  40.             if( myFile != null)
  41.              myFile.close();
  42.             if( resultFile != null)
  43.              resultFile.close();
  44.             
  45.   } catch (ParserException e) { 
  46.    e.printStackTrace();
  47. }
  48.   
  49.   
  50.   }
  51.   public static void getBaiduUrls(String url , String pageEncoding,PrintWriter writer)  throws ParserException
  52.   { 
  53.   NodeList nodeList = null;
  54.   try { 
  55.    Parser parser = new Parser(url);
  56.        parser.setEncoding(pageEncoding);                            // 设置解析编码格式
  57.    // Baidu 检索结果的url连接和标题
  58.        nodeList = parser.parse( new AndFilter( new HasAttributeFilter("target") , 
  59.                                         new HasAttributeFilter("onclick")));
  60.    } catch (ParserException e) { 
  61.    e.printStackTrace();
  62.    }
  63.   if(nodeList != null && nodeList.size() > 0) {                 // 循环遍历每个Url节点
  64.    for(int i = 0; i < nodeList.size(); i ++) {
  65.    String urlLink = ((LinkTag)nodeList.elementAt(i)).extractLink();
  66.    String LinkName = ((LinkTag)nodeList.elementAt(i)).getLinkText();
  67.    
  68.    if( urlLink.indexOf("bnu") == 0 || urlLink.indexOf("http") == 0 )
  69.    System.out.println("结果 "+ i +" 标题:"+LinkName);
  70.    System.out.println("       链接:"+urlLink );
  71.    writer.println(urlLink);
  72.     }
  73.   }
  74.   }
  75. }