`
liuxinglanyue
  • 浏览: 551219 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

htmlparser分析网页链接时的问题

阅读更多

转:http://gbfd2012.iteye.com/blog/685005

利用htmlparser在解析网页的url链接时,我们想提取指定标签下的链接。例如:div id=wrap下的链接,可以通过下面代码实现: 

 

Parser	parser = new Parser(url);
NodeFilter nodefilter1=new AndFilter(new TagNameFilter(nodename),new HasAttributeFilter(attr,attrvalue));
		try {
			org.htmlparser.util.NodeList nodeList=parser.extractAllNodesThatMatch(nodefilter1);
			nodefilter1=new NodeClassFilter(LinkTag.class);
			nodeList=nodeList.extractAllNodesThatMatch(nodefilter1,true);
			for(org.htmlparser.Node node:nodeList.toNodeArray()){
				if(node instanceof LinkTag){
				LinkTag links=(LinkTag)node;
//				if(links.extractLink().length()>textleaf.length()){
				
				uArrayList.add(links.extractLink());
//			}
				}
			}

 但是发现在有时解析出的url网址没有全部被解析(是不是htmlparser的BUG)。举例说明下: 

http://news.sina.com.cn/china/我们解析新浪新闻网下<div id="wrap">的链接,而用上述只能解析出http://news.sina.com.cn等四个网址,这是上述标签下的一个子标签的链接。而如果我们将网页中的Script,STYLE标签过滤掉之后,链接就都有了。。过滤Script、style等标签我是用的DOM树进行。 
    不知道有没有人知道上述问题的原因。 

分享到:
评论

相关推荐

    HttpClient以及获取页面内容应用

    ParserFeedback的代码很简单,是针对调试和跟踪分析过程的,一般不需要改变。而使用Lexer???? 3.3.2HtmlPaser使用Node对象保存各节点信息 (1)访问各个节点的方法 Node getParent ():取得父节点 NodeList ...

    java开源包4

    3、连接复用,因此在多线程获取连接时无需阻塞; 4、同步调用; 5、超时机制; 6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换...

    java开源包8

    3、连接复用,因此在多线程获取连接时无需阻塞; 4、同步调用; 5、超时机制; 6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换...

    自己动手写搜索引擎(罗刚著).doc

    3.2.2 JDBC数据库连接 36 3.2.3 增量抓取 40 3.3 抓取本地硬盘上的文件 41 3.3.1 目录遍历 41 3.4 本章小结 42 第4章 提取文档中的文本内容 43 4.1 从HTML文件中提取文本 43 4.1.1 HtmlParser介绍 51 4.1.2 结构化...

    java开源包1

    3、连接复用,因此在多线程获取连接时无需阻塞; 4、同步调用; 5、超时机制; 6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换...

    java开源包11

    3、连接复用,因此在多线程获取连接时无需阻塞; 4、同步调用; 5、超时机制; 6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换...

    java开源包2

    3、连接复用,因此在多线程获取连接时无需阻塞; 4、同步调用; 5、超时机制; 6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换...

    java开源包3

    3、连接复用,因此在多线程获取连接时无需阻塞; 4、同步调用; 5、超时机制; 6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换...

    java开源包6

    3、连接复用,因此在多线程获取连接时无需阻塞; 4、同步调用; 5、超时机制; 6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换...

    java开源包5

    3、连接复用,因此在多线程获取连接时无需阻塞; 4、同步调用; 5、超时机制; 6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换...

    java开源包10

    3、连接复用,因此在多线程获取连接时无需阻塞; 4、同步调用; 5、超时机制; 6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换...

    java开源包7

    3、连接复用,因此在多线程获取连接时无需阻塞; 4、同步调用; 5、超时机制; 6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换...

    java开源包9

    3、连接复用,因此在多线程获取连接时无需阻塞; 4、同步调用; 5、超时机制; 6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换...

    java开源包101

    3、连接复用,因此在多线程获取连接时无需阻塞; 4、同步调用; 5、超时机制; 6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换...

    Java资源包01

    3、连接复用,因此在多线程获取连接时无需阻塞; 4、同步调用; 5、超时机制; 6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换...

    低清版 大型门户网站是这样炼成的.pdf

    13.3.3 设计良好的网页结构 798 13.3.4 seo基本功——关键词的选用 800 13.3.5 域名与空间对seo的影响 802 13.3.6 搜索引擎偏爱“勤快”的网站 804 13.4 搜索引擎优化辅助工具大本营 805 13.4.1 关键字选词辅助...

    JAVA上百实例源码以及开源项目源代码

    像坐标控制、旋转矩阵、定时器、生成图像、数据初始化、矩阵乘法、坐标旋转、判断是否是顺时针方向排列、鼠标按下、放开时的动作等,都可在本源码中得以体现。 Java编写的显示器显示模式检测程序 2个目标文件 内容...

    JAVA上百实例源码以及开源项目

    像坐标控制、旋转矩阵、定时器、生成图像、数据初始化、矩阵乘法、坐标旋转、判断是否是顺时针方向排列、鼠标按下、放开时的动作等,都可在本源码中得以体现。 Java编写的显示器显示模式检测程序 2个目标文件 内容...

Global site tag (gtag.js) - Google Analytics