当前位置: 代码迷 >> HTML/CSS >> [转][htmlparser]htmlparser应用例子(全)
  详细解决方案

[转][htmlparser]htmlparser应用例子(全)

热度:938   发布时间:2012-12-28 10:29:04.0
[转][htmlparser]htmlparser使用例子(全)

from :?http://gcgmh.iteye.com/blog/474093

?

?

  1. import?java.net.URL;??
  2. ??
  3. import?junit.framework.TestCase;??
  4. ??
  5. import?org.apache.log4j.Logger;??
  6. import?org.htmlparser.Node;??
  7. import?org.htmlparser.NodeFilter;??
  8. import?org.htmlparser.Parser;??
  9. import?org.htmlparser.Tag;??
  10. import?org.htmlparser.beans.LinkBean;??
  11. import?org.htmlparser.filters.NodeClassFilter;??
  12. import?org.htmlparser.filters.OrFilter;??
  13. import?org.htmlparser.filters.TagNameFilter;??
  14. import?org.htmlparser.tags.HeadTag;??
  15. import?org.htmlparser.tags.ImageTag;??
  16. import?org.htmlparser.tags.InputTag;??
  17. import?org.htmlparser.tags.LinkTag;??
  18. import?org.htmlparser.tags.OptionTag;??
  19. import?org.htmlparser.tags.SelectTag;??
  20. import?org.htmlparser.tags.TableColumn;??
  21. import?org.htmlparser.tags.TableRow;??
  22. import?org.htmlparser.tags.TableTag;??
  23. import?org.htmlparser.tags.TitleTag;??
  24. import?org.htmlparser.util.NodeIterator;??
  25. import?org.htmlparser.util.NodeList;??
  26. import?org.htmlparser.util.ParserException;??
  27. import?org.htmlparser.visitors.HtmlPage;??
  28. import?org.htmlparser.visitors.NodeVisitor;??
  29. import?org.htmlparser.visitors.ObjectFindingVisitor;??
  30. ??
  31. public?class?T?extends?TestCase?{??
  32. ??
  33. ??private?static?final?Logger?logger?=?Logger.getLogger(T.class);??
  34. ??
  35. ??public?T(String?name)?{??
  36. ????super(name);??
  37. ??}??
  38. ??
  39. ??/*?
  40. ???*?测试ObjectFindVisitor的用法?
  41. ???*/??
  42. ??public?void?testImageVisitor()?{??
  43. ????try?{??
  44. ??????ImageTag?imgLink;??
  45. ??????ObjectFindingVisitor?visitor?=?new?ObjectFindingVisitor(ImageTag.class);??
  46. ??????Parser?parser?=?new?Parser();??
  47. ??????parser.setURL("http://www.google.com");??
  48. ??????parser.setEncoding(parser.getEncoding());??
  49. ??????parser.visitAllNodesWith(visitor);??
  50. ??????Node[]?nodes?=?visitor.getTags();??
  51. ??????for?(int?i?=?0;?i?<?nodes.length;?i++)?{??
  52. ????????imgLink?=?(ImageTag)?nodes[i];??
  53. ????????logger.fatal("testImageVisitor()?ImageURL?=?"?+?imgLink.getImageURL());??
  54. ????????logger.fatal("testImageVisitor()?ImageLocation?=?"?+?imgLink.extractImageLocn());??
  55. ????????logger.fatal("testImageVisitor()?SRC?=?"?+?imgLink.getAttribute("SRC"));??
  56. ??????}??
  57. ????}?catch?(Exception?e)?{??
  58. ??????e.printStackTrace();??
  59. ????}??
  60. ??}??
  61. ??
  62. ??/*?
  63. ???*?测试TagNameFilter用法?
  64. ???*/??
  65. ??public?void?testNodeFilter()?{??
  66. ????try?{??
  67. ??????NodeFilter?filter?=?new?TagNameFilter("IMG");??
  68. ??????Parser?parser?=?new?Parser();??
  69. ??????parser.setURL("http://www.google.com");??
  70. ??????parser.setEncoding(parser.getEncoding());??
  71. ??????NodeList?list?=?parser.extractAllNodesThatMatch(filter);??
  72. ??????for?(int?i?=?0;?i?<?list.size();?i++)?{??
  73. ????????logger.fatal("testNodeFilter()?"?+?list.elementAt(i).toHtml());??
  74. ??????}??
  75. ????}?catch?(Exception?e)?{??
  76. ??????e.printStackTrace();??
  77. ????}??
  78. ??
  79. ??}??
  80. ??
  81. ??/*?
  82. ???*?测试NodeClassFilter用法?
  83. ???*/??
  84. ??public?void?testLinkTag()?{??
  85. ????try?{??
  86. ??
  87. ??????NodeFilter?filter?=?new?NodeClassFilter(LinkTag.class);??
  88. ??????Parser?parser?=?new?Parser();??
  89. ??????parser.setURL("http://www.google.com");??
  90. ??????parser.setEncoding(parser.getEncoding());??
  91. ??????NodeList?list?=?parser.extractAllNodesThatMatch(filter);??
  92. ??????for?(int?i?=?0;?i?<?list.size();?i++)?{??
  93. ????????LinkTag?node?=?(LinkTag)?list.elementAt(i);??
  94. ????????logger.fatal("testLinkTag()?Link?is?:"?+?node.extractLink());??
  95. ??????}??
  96. ????}?catch?(Exception?e)?{??
  97. ??????e.printStackTrace();??
  98. ????}??
  99. ??
  100. ??}??
  101. ??
  102. ??/*?
  103. ???*?测试<link?href="?text=’text/css’?rel=’stylesheet’?/>用法?
  104. ???*/??
  105. ??public?void?testLinkCSS()?{??
  106. ????try?{??
  107. ??
  108. ??????Parser?parser?=?new?Parser();??
  109. ??????parser.setInputHTML("<head><title>Link?Test</title>"??
  110. ??????????+?"<link?href=’/test01/css.css'?text='text/css'?rel='stylesheet'?/>"??
  111. ??????????+?"<link?href='/test02/css.css'?text='text/css'?rel='stylesheet'?/>"?+?"</head>"??
  112. ??????????+?"<body>");??
  113. ??????parser.setEncoding(parser.getEncoding());??
  114. ??
  115. ??????for?(NodeIterator?e?=?parser.elements();?e.hasMoreNodes();)?{??
  116. ????????Node?node?=?e.nextNode();??
  117. ????????logger.fatal("testLinkCSS()"?+?node.getText()?+?node.getClass());??
  118. ??
  119. ??????}??
  120. ????}?catch?(Exception?e)?{??
  121. ??????e.printStackTrace();??
  122. ????}??
  123. ??}??
  124. ??
  125. ??/*?
  126. ???*?测试OrFilter的用法?
  127. ???*/??
  128. ??public?void?testOrFilter()?{??
  129. ????NodeFilter?inputFilter?=?new?NodeClassFilter(InputTag.class);??
  130. ????NodeFilter?selectFilter?=?new?NodeClassFilter(SelectTag.class);??
  131. ??
  132. ????NodeList?nodeList?=?null;??
  133. ??
  134. ????try?{??
  135. ??????Parser?parser?=?new?Parser();??
  136. ??????parser??
  137. ??????????.setInputHTML("<head><title>OrFilter?Test</title>"??
  138. ??????????????+?"<link?href='/test01/css.css'?text='text/css'?rel='stylesheet'?/>"??
  139. ??????????????+?"<link?href='/test02/css.css'?text='text/css'?rel='stylesheet'?/>"??
  140. font-size: 1em; margin-top: 0px; margin-righ
    1 楼 满月无双 2011-08-10  
    testLinkCSS()方法怎么取出 <link href属性的值呢??
    2 楼 zxhDaniel 2011-08-13  
    满月无双 写道
    testLinkCSS()方法怎么取出 <link href属性的值呢??

    你可以拿到那个link这个节点的对象Node,然后再用getAttribute()这种类似的方法取出来