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

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

转载于:https://www.cnblogs.com/lchzls/p/6282704.html

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

  1. 爬虫概念与编程学习之如何爬取视频网站页面(三)

    先看,前一期博客,理清好思路. 爬虫概念与编程学习之如何爬取网页源代码(一) 爬虫概念与编程学习之如何爬取视频网站页面(用HttpClient)(二) 不多说,直接上代码. 编写代码 运行 <! ...

  2. 40行代码教你爬遍小视频网站

    /1 前言/ 还在为在线看小视频缓存慢发愁吗?还在为想重新回味优秀作品但找不到资源而忧虑吗?莫要慌,让python来帮你解决,40行代码教你爬遍小视频网站,先批量下载后仔细观看,岂不美哉! /2 整理 ...

  3. kux转换为mp4软件_kux2mp4(优酷kux转换为mp4软件)下载-kux2mp4(优酷kux转换为mp4软件)免费版下载v2021...

    喜欢使用优酷看视频的小伙伴们会发现在优酷上面下载下来的视频格式是kux的,在其它的地方几乎不能正常播放,这种情况可以使用这款kux2mp4软件进行视频格式的转换,可以快速将kux转换为常用的mp4格式 ...

  4. 优酷分享html代码,优酷视频自适应移动版网页方案

    在网页中插入视频之后,存在一个问题,就是移动版网页的视频自适应小窗口. 本文用优酷来举例,优酷的每个视频页面,都给我们提供了直接对视频内容进行分享的链接,视频插入网页很容易,但是此网页的移动版在显示视 ...

  5. 获取优酷网、土豆网、56网的视频缩略图

    优酷网: http://v.youku.com/player/getPlayList/VideoIDS/XNzYxNTYzMDY4/timezone/+08/version/5/source/out? ...

  6. 程序员不是Loser 质疑优酷《小酒窝吐槽程序员》视频

    视频地址:http://v.youku.com/v_show/id_XNjczMDM0NTI0.html1543318452 近期,优酷精选推出的<小酒窝搞笑吐槽程序员>视频,让程序员们觉 ...

  7. php获取视频信息,支持优酷土豆新浪腾讯等多家网站

    video.php类 <?php /** * 解析 视频信息 类 * * 支持 优酷, 土豆 酷6 56 新浪 qq播客 乐视 乐视 **/class class_video{// 超时时间va ...

  8. 爬虫概念与编程学习之如何爬取视频网站页面(用HttpClient)(二)

    编写代码 运行 <!DOCTYPE html><html><head><meta http-equiv="X-UA-Compatible" ...

  9. 影视网站设计报告代码MySQL_基于PHP的视频网站的设计与实现(MySQL)(含录像)

    基于PHP的视频网站的设计与实现(MySQL)(含录像)(毕业论文10000字,程序代码,MySQL数据库) 本研究的视频网站基于当前较为流行的B/S结构,采用PHP技术和MYSQL数据库进行开发设计 ...

最新文章

  1. OpenStack七年盘点,热潮褪去后的明天在哪?
  2. python爬虫实例100-Python 练习实例1
  3. c++ 多线程 垃圾回收器_JVM的垃圾回收机制 总结(垃圾收集、回收算法、垃圾回收器)...
  4. ArcGIS License Manager 更新
  5. 20172307 2018-2019-1 《程序设计与数据结构》实验3报告
  6. 60-10-060-命令-kafka-run-class.sh
  7. 团队第一阶段冲刺——第九天
  8. 37. customer payment(1)
  9. 3807. 构造字符串——AcWing题库
  10. 文件服务器minio
  11. 微信小程序授权登录、绑定手机号(接口+小程序)
  12. HTML5:移动互联网的第二个苹
  13. 【BP靶场portswigger-服务端1】SQL注入-17个实验(全)
  14. Ubuntu18.04搭建Android源码编译环境
  15. 【C语言】#ifdef和#endif条件编译
  16. forward请求转发
  17. 【宇麦科技】群晖NAS套件之Drive的客户端安装与配置(二),新手必读!
  18. 算法与数据结构 --- 串,数组与广义表 --- 数组
  19. 九章算法面试题86 合并排序数组
  20. Login 2020:技术唤醒她力量进行时

热门文章

  1. 计算机入门模拟试题abcd,计算机一级计算机基础及WPSOffice应用考前模拟试题及答案(7)...
  2. java的简单工厂模式_java设计模式之简单工厂模式
  3. python同时监听多个端口_python bottle使用多个端口(多个进程)提高并发
  4. python对比两张图片_用python实现对比两张图片的不同
  5. 数学--数论--HDU 4675 GCD of Sequence(莫比乌斯反演+卢卡斯定理求组合数+乘法逆元+快速幂取模)
  6. JAVA大数--POJ 1715 大菲波数
  7. 关于keil环境的 三个红点(备忘)
  8. mac中修改系统限制量--ulimit和sysctl
  9. 人造肉真的上市了,这对养殖业会有什么影响?
  10. 70后存款100万,有房有车无贷款,每月租金1.5万,可以退休吗?