优酷电视剧爬虫代码实现一:下载解析视频网站页面(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("\ttext=" +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("\thref=" +n.getAttributeByName( "href" )+ ", text=" +n.getText());  
  38.         }  
  39.     }  
  40. }  

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

 

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/253567.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

小程序开发-利用canvas实现保存二维码海报到本机

场景及需求 在小程序开发过程中&#xff0c;经常需要实现保存某个页面为带小程序码的二维码海报图片到本地&#xff0c;然后用于分享或者发朋友圈等操作。 主要技术点及小程序相关api 技术注意事项 小程序的canvas与H5 canvas使用api大部分一致&#xff0c;但由于小程序中没有D…

Docker系统六:Docker网络管理

Docker网络 I. Docer的通信方式 默认情况下&#xff0c;Docker使用网桥&#xff08;brige&#xff09; NAT的通信模型. Docker启动时会自动创建网桥Docker0&#xff0c;并配置ip 172.17.0.1/16 ifconfig docker0 docker0 Link encap:Ethernet HWaddr 02:42:e0:31:ac:10inet …

pthread_cond_wait

1. 首先pthread_cond_wait 的定义是这样的 The pthread_cond_wait() andpthread_cond_timedwait() functions are used to block on a condition variable. They are called withmutex locked by the calling thread or undefined behaviour will result. These functions ato…

HDU 1525 Euclid's Game

题目大意&#xff1a; 题目给出了两个正数a.b 每次操作&#xff0c;大的数减掉小的数的整数倍。一个数变为0 的时候结束。 谁先先把其中一个数减为0的获胜。问谁可以赢。Stan是先手。 题目思路&#xff1a; 无论a,b的值为多少&#xff0c;局面&#xff1a;[a%b&#xff0c;b] 一…

SRAM BIST技术学习

MBIST 方法是目前大容量存储器测试的主流技术&#xff0c;该技术利用芯片内部专门设计的BIST 电路进行自动化测试&#xff0c;能够对嵌入式存储器这种具有复杂电路结构的嵌入式模块进行全面的测试。MBIST 电路将产生测试向量的电路模块以及检测测试结果的比较模块都置于芯片的内…

【Zigbee技术入门教程-02】一图读懂ZStack协议栈的核心思想与工作机理

【Zigbee技术入门教程-02】一图读懂ZStack协议栈的核心思想与工作机理 广东职业技术学院 欧浩源 Z-Stack协议栈是一个基于任务轮询方式的操作系统&#xff0c;其任务调度和资源分配由操作系统抽象层OSAL管理着。 你可以理解为&#xff1a;Z-Stack协议栈 OSAL操作系统 CC25…

CMOS图像传感器——SmartSens

近年来CIS发展成为增量市场,国产CIS厂商也踊跃布局,给业界带来许多惊喜。思特威(上海)电子科技股份有限公司(SmartSens)正是国产CIS中亮眼的一家厂商。数据显示,2020年思特威安防监控市场的CIS芯片出货量为1.46亿颗,继续位居全球出货量TOP1的位置;同年,思特威的新兴领…

Servlet第二篇【Servlet调用图、Servlet细节、ServletConfig、ServletContext】

Servlet的调用图 前面我们已经学过了Servlet的生命周期了&#xff0c;我们根据Servlet的生命周期画出Servlet的调用图加深理解 Servlet的细节 一个已经注册的Servlet可以被多次映射 同一个Servlet可以被映射到多个URL上。 <servlet><servlet-name>Demo1</servle…

vue响应式原理

vue响应式原理 initState new Vue() > _init() > initState: function initState (vm: Component) {vm._watchers []const opts vm.$optionsif (opts.props) initProps(vm, opts.props)if (opts.methods) initMethods(vm, opts.methods)if (opts.data) {initData(vm)} …

Oracle数据库管理与开发pdf

下载地址&#xff1a;网盘下载基本介绍编辑内容简介Oracle是一个适合于大中型企事业的数据库管理系统&#xff0c;在银行、电信、移动通信、航空、保险、金融、气象、铁路、跨国公司和电子商务等诸多领域得到了广泛的应用。据统计&#xff0c;在所有数据库管理系统中&#xff0…

DVS/DVR区别

一、DVS &#xff08;Digital Video Server&#xff09;网络视频服务器的简称。DVS(网络视频服务器)的原理网络视频服务器主要实现模拟视音频信号的IP 化。经数字化的视音频信号MPEG-4 视频压缩算法和G.729/ADPCM 音频压缩算法进行压缩编码&#xff0c;然后通过IP 网将低码率的…

自动对焦方法学习

实现自动对焦的方法有很多种,可以根据不同的工作原理,将自动对焦技术分成不同种类。 按照系统是否自带信号发射系统,可以分为主动式与被动式两种类型。 主动式对焦方法是由成像系统中的发射装置发出信号,然后再由接收装置接收从被摄景物所反射回来的反馈信号并利用通过计算…

微粒化运营:升级内容产业消费体验(附视频版)

那些最受欢迎的内容平台做对了什么&#xff1f; Facebook和Google是全球互联网广告产业中最早开始微粒化运营的代表&#xff0c;Google的互联网精准广告的思路与微粒化运营是完全相同的&#xff0c;这两家公司也因此获得了全球超过20%的互联网广告的收入。 以Facebook为例&…

mycat读写分离

只需要读写分离的功能&#xff0c;分库分表的都不需要。 涉及到的配置文件&#xff1a; 1.conf/server.xml 主要配置的是mycat的用户名和密码&#xff0c;mycat的用户名和密码和mysql的用户名密码是分开的&#xff0c;应用连接mycat就用这个用户名和密码。 <?xml version&q…

chisel快速入门(一)

一、概述 Chisel&#xff08;Constructing Hardware In a Scala Embedded Language&#xff09;是一种嵌入在高级编程语言Scala的硬件构建语言。Chisel实际上只是一些特殊的类定义&#xff0c;预定义对象的集合&#xff0c;使用Scala的用法&#xff0c;所以在写Chisel程序时实际…

DVS/DVR常见的监控名词

英文名词 说明BNC 全称Bayonet Nut Connector&#xff0c;一种用于同轴电缆的连接器DHCP 动态主机配置协议&#xff0c;用于动态地指派配置信息DNS 域名系统&#xff0c;以用户友好的方式将名字转换为…

导出数据生成excel

前台&#xff1a; <asp:Button ID"btnMoney" runat"server" Text"经费使用总结表" CssClass"admin_cx marginleft" Height"25" OnClick"btnMoney_Click" /> 后台&#xff1a; protected void btnMoney_Cli…

U盘基本处理,U盘与移动固态硬盘

一、辨别 USB2.0 和 USB3.0 1、从USB外观上来看&#xff0c;USB2.0通常是白色或黑色&#xff0c;而USB3.0则改观为“高大上”的蓝色接口。 目前&#xff0c;部分笔记本电脑USB接口&#xff0c;已同时提供对USB2.0及USB3.0的支持&#xff0c;我们可以通过接口颜色来区别。 2、从…

UWP_小说在线阅读器:功能要求与技术要求

注&#xff1a;2017年2月23日正式提上日程 学了WP开发也有一年了&#xff0c;也没做过什么软件的。17年进发UWP&#xff0c;锻炼自己一下。做一个开源的小说阅读器吧。 既然开发一个软件。所以要设计一下吧。 功能要求&#xff1a; 可能要用到的技术&#xff0c;这个吗&#xf…

chisel快速入门(二)

上一篇见此&#xff1a; chisel快速入门&#xff08;一&#xff09;_沧海一升的博客-CSDN博客简单介绍了chisel&#xff0c;使硬件开发者能快速上手chisel。https://blog.csdn.net/qq_21842097/article/details/121415341 十、运行和测试 现在我们已经定义了模块&#xff0c;…