对标签(A)的解析

原创 2008年09月29日 12:11:00

最近再看一本关于spider的书,偶尔想起了对标签<A>的解析过程。偶就把代码拷贝过来了,以备不是之需:

  1. import java.io.BufferedWriter;
  2. import java.io.File;
  3. import java.io.FileWriter;
  4. import java.io.IOException;
  5. import java.util.Date;
  6. import org.htmlparser.NodeFilter;
  7. import org.htmlparser.filters.AndFilter;
  8. import org.htmlparser.filters.HasAttributeFilter;
  9. import org.htmlparser.filters.NotFilter;
  10. import org.htmlparser.filters.TagNameFilter;
  11. import org.htmlparser.tags.LinkTag;
  12. import org.htmlparser.util.NodeList;
  13. public class Extractxxx extends Extractor {
  14.     public void extract() 
  15.     {
  16.         BufferedWriter bw = null;
  17.         
  18.         NodeFilter title_filter = new AndFilter(new TagNameFilter("a"),
  19.                         new NotFilter(new HasAttributeFilter("href","../")));
  20.         //提取标题信息
  21.         try {
  22.             //Parser根据过滤器返回所有满足过滤条件的节点
  23.             NodeList title_nodes = this.getParser().parse(title_filter);
  24.             for(int i=0;i<title_nodes.size();i++)
  25.             {
  26.                 LinkTag node=(LinkTag)title_nodes.elementAt(i);
  27.                 String[] names=node.getChildrenHTML().split("//.");
  28.                 
  29.                 StringBuffer title=new StringBuffer();
  30.                 
  31.                 for(int j=0;j<names.length;j++)
  32.                 {
  33.                     title.append(names[j]).append("-");
  34.                 }
  35.                 title.append((new Date()).getTime());
  36.                 
  37.                 bw= new BufferedWriter(new FileWriter(new File(this
  38.                         .getOutputPath()
  39.                         + title + ".txt")));
  40.                 
  41.                 
  42.                 String url=node.getAttribute("href");
  43.                 
  44.                 int startPos=getInputFilePath().indexOf(":")+2;
  45.                 int endPos=getInputFilePath().lastIndexOf(".")-5;
  46.                 String url_seg=getInputFilePath().substring(startPos, endPos);
  47.                 url_seg=url_seg.replaceAll("////", "/");
  48.                 String originalUrl=url_seg+url;
  49.                 System.out.println(originalUrl);
  50.                 bw.write(originalUrl+NEWLINE);
  51.                 for(int k=0;k<names.length;k++)
  52.                 {
  53.                     bw.write(names[k]+NEWLINE);
  54.                 }
  55.                 
  56.                 try
  57.                 {
  58.                     if (bw != null)
  59.                         bw.close();
  60.                 }catch(IOException e)
  61.                 {
  62.                     e.printStackTrace();
  63.                 }   
  64.             }
  65.             
  66.             /*
  67.             NodeIterator it=title_nodes.elements();
  68.             while(it.hasMoreNodes())
  69.             {
  70.                 Node node=(Node)it.nextNode();
  71.                 System.out.println(node.toHtml());
  72.             }
  73.             */
  74.         } catch (Exception e) {
  75.             e.printStackTrace();
  76.         }
  77.     }
  78.     
  79.     public static void main(String[] args) throws Exception 
  80.     {
  81.         Extractor extractor = new ExtractJindui();
  82.         extractor.setOutputPath("c://film//xxx//");
  83.         File path= new File("F://xxx.xxx.xxx//xxxx");
  84.         traverse(extractor,path);
  85.     }
  86. }

重点注意的是:

1,LinkTag的使用;

2,String[] names=node.getChildrenHTML().split("//.");里面正则表达式的使用;

3,String url=node.getAttribute("href"); href后面内容的获取。

 

OK!

 

a标签自动解析URL

很多时候我们有从一个URL中提取域名,查询关键字,变量参数值等的需要,而万万没想到可以让浏览器方便地帮我们完成这一任务而不用我们写正则去抓取。方法就在JS代码里先创建一个a标签然后将需要解析的URL赋...
  • SheyChen
  • SheyChen
  • 2015年03月15日 23:37
  • 491

使用TextView解析a标签

我们经常遇到过这样的需求 后台传了一段html过来,比如我是夏雨,这是我的博客,更多android技术分享就在这里 我们要显示这段文字,并且获取里面的a标签的点击事件,效果如下 其实android...
  • yulyu
  • yulyu
  • 2016年08月18日 21:09
  • 5704

Java解析HTML标签

import java.util.HashMap; import java.util.Map; public class TagParser { private Integer index = 0...
  • kevin_Luan
  • kevin_Luan
  • 2014年09月21日 01:16
  • 5169

Python——爬虫(解析简单标签)

Python——爬虫(解析简单标签) # -*- coding: utf-8 -*- # 使用BeautifulSoup解析网页 from bs4 import BeautifulSoup #获取要...
  • qq_29721419
  • qq_29721419
  • 2017年01月14日 21:19
  • 1961

Jsoup学习笔记2:Jsoup解析HTML代码标签与属性

转载自:http://jilongliang.iteye.com/blog/1922295?utm_source=tuicool 接着上一篇的Jsoup学习笔记1继续学习,虽然是转载自上面链接的文章...
  • cjp0326
  • cjp0326
  • 2015年07月03日 11:18
  • 1719

删除HTML里的a href标签

第一种方式是用正则 String aHrefRegex = "]*?\\shref=['\"]?(.*?)['\"].*?>"; String content = " \n" +...
  • zhouyan8603
  • zhouyan8603
  • 2015年08月29日 00:46
  • 1822

js解析html字符串

var html = '      Geoserver GetFeatureInfo output     table.featureInfo, table.featureInfo td, table...
  • inrtyx
  • inrtyx
  • 2014年03月04日 11:09
  • 2786

spring默认标签解析

上篇说到对Document的解析,其中的方法并没有深究,那么spring究竟是如何解析Document默认标签的呢? bean标签的解析    此方法是spring解析默认标签的实现,里面...
  • qq_22912803
  • qq_22912803
  • 2016年09月17日 15:38
  • 396

html标签不解析直接输出代码问题处理

PHP中,echo出一段字符串,字符串中含有许多html标签,比如,,等等,浏览器直接将这些标签原样输出了,没有解析,不解析html标签怎么办呢? 处理方法:html_entity_decode($...
  • lilian129
  • lilian129
  • 2016年03月02日 14:50
  • 2743

spring 源码探索--xml的自定义标签解析

protected void parseBeanDefinitions(Element root, BeanDefinitionParserDelegate delegate) { i...
  • crazyzhb2012
  • crazyzhb2012
  • 2016年11月20日 11:40
  • 885
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:对标签(A)的解析
举报原因:
原因补充:

(最多只允许输入30个字)