`
hhyyllgg
  • 浏览: 28346 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

htmlparse实践

阅读更多
   这几天小侄子天天缠着我要听儿歌,蛮横的霸占我的电脑,想着干脆帮他网站里面的中文flash都下下来,一个个下显然不符合我们程序员的风格,加上前几天单位的一个研究生问了我一些htmlparse的事(不太熟,回答不上来 ),合着今晚要熬夜看欧冠决赛,乘着决赛钱还有3个小时,来研究一下这个抓取网页内容的东东
  目标抓取网址是 http://www.qbaobei.com/里面的中文flash儿歌
先用迅雷讲列表批量下载下来,存到C:\TDDOWNLOAD\html里面,共有8 个网页

   现在的目标很简单,就是根据列表页,获取各个flash的展示页面url 然后再根据展示页面url 获取flash的播放地址,存入一个文件中

---------------------------------------------------------------------
htmlParse采用的是经典的Composite模式,通过RemarkNode,TextNode...来描述HTML页面的中的元素

htmlParse有两种方式访问网页,Visitor和FIlter方式

代码如下
public void testVistor(){
		Parser parser=new Parser();
		try {
			parser.setURL("http://www.qbaobei.com/");
			parser.setEncoding("UTF-8");
			NodeVisitor  nodeVisitor=new NodeVisitor(){
				public void visitTag(Tag tag) {
					System.out.println(tag.getTagName()+"---"+tag.getClass());
				}
			};
			parser.visitAllNodesWith(nodeVisitor);
		} catch (ParserException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
	
	
	public void testFilter(){
		try {
			NodeFilter filter=new NodeClassFilter(LinkTag.class);
			
			Parser parser=new Parser();
			parser.setURL("http://www.qbaobei.com/");
			parser.setEncoding("UTF-8");
			NodeList list=parser.extractAllNodesThatMatch(filter);
			//循环list
		} catch (ParserException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		
	}




以下是打印出所有url的代码

public  void getFlashUrl(List list,int start){
		
		try {
			NodeFilter filter=new AndFilter(new TagNameFilter("Object"),new HasAttributeFilter("id","flashObject"));
				Parser parser=new Parser();
				System.out.println("start");
			for (int s=start;s<list.size();s++) {
					count++;
					String url = (String) list.get(s);
					if("http://www.qbaobei.com/Html/erge/FZEG/09593133.htm".equalsIgnoreCase(url))
						continue;
				parser.setURL(url);
				parser.setEncoding("UTF-8");
				NodeList oblist=parser.extractAllNodesThatMatch(filter);
				//循环list
					Node node=oblist.elementAt(0);
						ObjectTag tag = (ObjectTag)node;
						if(tag!=null&&tag.getParameter("Src")!=null){
							String print=tag.getParameter("Src");
							if(!print.startsWith("http:"))
								print="http://f.qbaobei.com"+print;
							System.out.println(print);
						}
			}
			System.out.println("end");
		} catch (Exception e) {
			// TODO Auto-generated catch block
			System.out.println(count);
			getFlashUrl(list,count++);
			e.printStackTrace();
		}
		
		
	}
	public  List testFilter(){
		ArrayList linkList=new ArrayList();
		try {
			NodeFilter filter=new AndFilter(new TagNameFilter("a"),new HasAttributeFilter("class","li_img w100 mgl10 mgb6 gray"));
			
			Parser parser=new Parser();
			for(int j=1;j<9;j++){
			parser.setResource("C:\\TDDOWNLOAD\\html\\index_"+j+".htm");
			parser.setEncoding("UTF-8");
			NodeList list=parser.extractAllNodesThatMatch(filter);
			//循环list
			for(int i=0;i<list.size();i++){
				Node node=list.elementAt(i);
				if(node instanceof LinkTag){
					 LinkTag link = (LinkTag)node;
					 String url=link.getLink();
					 String realLink=url.replaceAll("file://localhost/", "http://www.qbaobei.com/");
					 linkList.add(realLink);
				}
				
			}
			}
			
		} catch (ParserException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		System.out.println("共有"+linkList.size());
		return linkList;
	}
	public static void main(String[] args) {
		GetFlashUrl g=new GetFlashUrl();
		g.getFlashUrl(g.testFilter(),0);
	}
	
分享到:
评论

相关推荐

    htmlparse.jar

    htmlparse-1.5.jar 能用的jar 你值得拥有

    HTMLparse 包

    在HTMLparse包中,我们可以期待以下核心功能: 1. **HTML解析**:该包提供了高效的HTML解析器,可以将HTML文档转换为可操作的数据结构,如DOM树(Document Object Model)。这使得开发者可以方便地遍历和检索页面...

    htmlparse和设计模式

    介绍了htmlParse的原理以及应用还有其中设计是应用到的设计模式

    Java HtmlParse提取标签中的值操作

    Java HtmlParse 提取标签中的值操作 Java HtmlParse 是一个强大的 HTML 解析器,可以帮助开发者快速提取 HTML 文档中的标签和值。下面将详细介绍 Java HtmlParse 提取标签中的值操作的知识点。 HtmlParse 简介 ...

    Winista.Htmlparse.dll,C#源码,HTML解析

    本文将详细探讨Winista.Htmlparse.dll的原理、使用方法以及如何在Visual Studio 2010环境下进行开发。 首先,Winista.Htmlparse.dll的核心功能在于HTML解析。HTML解析是指将HTML源代码转换成DOM(Document Object ...

    htmlparse 解析html网页

    在本篇文章中,我们将深入探讨如何使用HTMLparse库来解析HTML网页,以便进行网页数据抓取。 首先,`htmlparse`通常指的是Python中的`html.parser`模块,它是Python标准库的一部分,用于解析HTML和XML文档。这个模块...

    httpClient和htmlparse获取网页数据使用jar

    在IT行业中,获取网页数据是常见的任务之一,用于数据分析、信息抓取或自动化测试等场景。...下面将详细介绍这两个库以及如何结合使用它们来从网页中提取数据。 ...HttpClient 4.2.3是其中一个稳定版本,包含了许多改进和...

    htmlParse的论文

    简单的介绍了htmlparse的原理以及应用

    拓展HtmlParse标签支持

    这种情况可能会导致解析结果不完整,比如只提取出标签的起始部分,而丢失了标签内的内容和结束标签。 首先,我们要理解HtmlParser的基本工作原理。...这些不常见的标签在HtmlParser的标准库中可能没有被定义,因此...

    HttpRequest+Document读取xml+HtmlParse+AsyncTask

    在Android开发中,HttpRequest、Document、HtmlParse以及AsyncTask是常用的技术组件,它们分别用于网络请求、XML解析、HTML解析和异步任务处理。这些技术的结合使用可以帮助开发者实现从远程服务器获取数据,解析XML...

    htmlparse.jar httpClient.jar je.jar

    标题中的"htmlparse.jar httpClient.jar je.jar"暗示了这些文件是Java编程中使用的库或框架,主要用于处理HTML解析和HTTP客户端通信。以下是对这些库的详细说明: 1. **htmlparse.jar**: 这个文件可能包含一个HTML...

    htmlparse 2.0 + 中文doc文档 天涯浪子

    这个“htmlparse 2.0 + 中文doc文档 天涯浪子”集合包含了HTMLParser 2.0版本的多个组件,便于用户学习和使用。 首先,我们来看看`htmlparser实现从网页上抓取数据.doc`。这个文档很可能提供了关于如何使用...

    htmlparse:使用 HTML 解析器

    在这个"htmlparse"项目中,作者可能实践了以上步骤,并尝试了不同的查找和操作方法。通过将练习整合到一个库中,作者可以方便地复用和扩展这些功能。 在学习HTML解析时,理解HTML的基本结构和语法规则很重要,比如...

    HTMLParse.java(使用HTTP请求HTML数据工具类)

    Java代码使用HTTP请求HTML数据工具类,post提交方法,BASE64编码, post提交方法,带用户名密码验证信息,

    Python 网页解析HTMLParse的实例详解

    Python 网页解析HTMLParse的实例详解 使用python将网页抓取下来之后,下一步我们就应该解析网页,提取我们所需要的内容了,在python里提供了一个简单的解析模块HTMLParser类,使用起来也是比较简单的,解析语法没有...

    爬虫的一个程序

    用HtmlClient4.3和HTMLParse 实现爬虫

    htmlparser中文文档

    ### HTMLParser中文文档知识点概述 #### 一、HTMLParser简介 ... #### 二、HTMLParser核心功能 ...HTMLParser作为一个独立的Java库,可以通过以下方式添加到项目中: ...1. **初始化HTMLParser**:创建一个`Parser`对象,并...

    java开发爬虫程序必备jar包集合

    下面将详细讨论标题和描述中提到的四个关键jar包:httpclient.jar、htmlparse.jar、logging.jar和codec.jar,以及它们在Java爬虫开发中的作用。 1. **httpclient.jar**: 这个jar包是Apache HttpClient库的一部分...

Global site tag (gtag.js) - Google Analytics