• 优酷电视剧爬虫代码实现一:下载解析视频网站页面(3)补充知识点:htmlcleaner使用案例


    htmlcleaner 下载地址:htmlcleaner2_1.jar 源码下载:htmlcleaner2_1-all.zip

    写一个测试用的html文件:html-clean-demo.html

    1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd " >   
    2. html   xmlns = "http://www.w3.org/1999/xhtml "   xml:lang = "zh-CN"   dir = "ltr" >  
    3. head >   
    4.     meta   http-equiv = "Content-Type"   content = "text/html; charset=GBK" />   
    5.     meta   http-equiv = "Content-Language"   content = "zh-CN" />   
    6.     title > html clean demo </ title >   
    7. </ head >   
    8. body >   
    9. div   class = "d_1" >   
    10.     ul >   
    11.         li > bar </ li >   
    12.         li > foo </ li >   
    13.         li > gzz </ li >   
    14.     </ ul >   
    15. </ div >   
    16. div >   
    17.     ul >   
    18.         li a   name = "my_href"   href = "1.html" > text-1 </ </ li >   
    19.         li a   name = "my_href"   href = "2.html" > text-2 </ </ li >   
    20.         li a   name = "my_href"   href = "3.html" > text-3 </ </ li >   
    21.         li a   name = "my_href"   href = "4.html" > text-4 </ </ li >   
    22.     </ ul >   
    23. </ div >   
    24. </ body >   
    25. </ html >   
     

    模拟需求:取出title,name="my_href" 的链接,div的class="d_1"下的所有li内容。下面用htmlcleaner写代码,HtmlCleanerDemo.java

    1. package  com.chenlb;  
    2.   
    3. import  java.io.File;  
    4.   
    5. import  org.htmlcleaner.HtmlCleaner;  
    6. import  org.htmlcleaner.TagNode;  
    7.   
    8. /**  
    9.  * htmlcleaner 使用示例.  
    10.  *  
    11.  * @author chenlb 2008-11-26 下午02:12:02  
    12.  */   
    13. public   class  HtmlCleanerDemo {  
    14.   
    15.     public   static   void  main(String[] args)  throws  Exception {  
    16.         HtmlCleaner cleaner = new  HtmlCleaner();  
    17.   
    18.         TagNode node = cleaner.clean(new  File( "html/html-clean-demo.html" ),  "GBK");  
    19.         //按tag取.   
    20.         Object[] ns = node.getElementsByName("title" ,  true );     //标题   
    21.   
    22.         if (ns.length >  0 ) {  
    23.             System.out.println("title=" +((TagNode)ns[ 0 ]).getText());  
    24.         }  
    25.         System.out.println("ul/li:" );  
    26.         //按xpath取   
    27.         ns = node.evaluateXPath("//div[@class='d_1']//li" );  
    28.         for (Object on : ns) {  
    29.             TagNode n = (TagNode) on;  
    30.             System.out.println(" text=" +n.getText());  
    31.         }  
    32.         System.out.println("a:" );  
    33.         //按属性值取   
    34.         ns = node.getElementsByAttValue("name" ,  "my_href" ,  true ,  true );  
    35.         for (Object on : ns) {  
    36.             TagNode n = (TagNode) on;  
    37.             System.out.println(" href=" +n.getAttributeByName( "href" )+ ", text=" +n.getText());  
    38.         }  
    39.     }  
    40. }  
     

    cleaner.clean()中的参数,可以是文件,可以是url,可以是字符串内容。个人认为:比较常用的应该是evaluateXPath、 getElementsByAttValue、getElementsByName方法了。另外说明下,htmlcleaner 对不规范的html兼容性比较好。

  • 相关阅读:
    matplotlib的使用——scatter散点图的绘制
    OpenCVPython系列之立体图像的深度图
    YOLOv3 cfg文件详解
    Opencv的使用小教程2——Opencv常用图像处理函数汇总
    数字世界中的纸张——理解 PDF
    go channel初步
    Unity学习记录 导航
    elasticsearch的keyword与text的区别
    markdownitcontainer
    Windows 编译opensll
  • 原文地址:https://www.cnblogs.com/lchzls/p/6282704.html
Copyright © 2020-2023  润新知