提取一个网页内的所有链接

 看上去可能没有什么用,但对于做小东西来说还是有点用处的。比如把这些链接放到Heritrix里面进行统一抓取。

在这里,我只是简单记录一下,没什么实质的内容:

代码如下:

  1. public void extract()
  2.     {
  3.         BufferedWriter bw=null;
  4.         String title="hangdian";
  5.         
  6.         NodeFilter  body_filter=new AndFilter(new TagNameFilter("A"),new NotFilter(new HasAttributeFilter("href","../")));
  7.         NodeFilter  option_filter=new AndFilter(new TagNameFilter("option"),new NotFilter(new HasAttributeFilter("value","../")));
  8.         //[a-zA-z]+://[^/s]*
  9.         //^((https?|ftp|news):)?([a-z]([a-z0-9/-]*[/.。])+([a-z]{2}|
  10.         
  11.         try
  12.         {
  13.             bw= new BufferedWriter(new FileWriter(new File(this 
  14.                     .getOutputPath() 
  15.                     + title + ".txt"))); 
  16.                NodeList title_nodes = this.getParser().parse(body_filter); 
  17.                 for(int i=0;i<title_nodes.size();i++) 
  18.                 { 
  19.                     LinkTag node=(LinkTag)title_nodes.elementAt(i);      
  20.                      
  21.                     String url=node.getAttribute("href"); 
  22.                     bw.write(url+NEWLINE);
  23.                 }
  24.         }
  25.         catch(Exception e)
  26.         {
  27.             e.printStackTrace();
  28.         }
  29.         this.getParser().reset();
  30.         try
  31.         {
  32.              NodeList title_nodes = this.getParser().parse(option_filter); 
  33.                 for(int i=0;i<title_nodes.size();i++) 
  34.                 { 
  35.                     OptionTag node=(OptionTag)title_nodes.elementAt(i);      
  36.                      
  37.                     String url=node.getAttribute("value"); 
  38.                     bw.write(url+NEWLINE);
  39.                 }
  40.         }
  41.         catch(Exception e)
  42.         {
  43.             e.printStackTrace();
  44.         }
  45.         
  46.         try
  47.         {
  48.             if(bw!=null)
  49.                 bw.close();
  50.         }catch(IOException e)
  51.         {
  52.             e.printStackTrace();
  53.         }
  54.     }

这是对我校主页的分析。

加入main()函数:

  1.     public static void main(String[]args) throws Exception
  2.     {
  3.         Extractor extractor=new ExtractHangdian();
  4.         extractor.setOutputPath("目标文件的保存位置");
  5.         File file=new File("我校主页的存放位置");
  6.         traverse(extractor,file);
  7.     }

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值