最近在写一个爬虫程序,需要分析HTML,网上开源的HTML分析库也不少,为了挑战一下,自己写了一个。
测试代码——提取网页中的<a...></a>标签的href路径,拿google做试验。
运行环境:JDK1.6以上
package org.zergle.w3c.html.lex;
import java.io.IOException;
import java.net.URL;
import org.junit.Test;
import org.w3c.dom.Document;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.w3c.html.HTMLReader;
public class TestHTMLReader {
@Test
public void testReadDocument() {
try {
HTMLReader reader = new HTMLReader(new URL("http://g.cn"));
Document doc = reader.readDocument();
NodeList links = doc.getElementsByTagName("A");
for (int i = 0; i < links.getLength(); i++) {
Node node = links.item(i);
if (node.hasAttributes()) {
NamedNodeMap attrs = node.getAttributes();
Node attr = attrs.getNamedItem("href");
if (attr != null) {
System.out.println(attr.getNodeValue());
}
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
打印结果如下:
http://images.google.cn/imghp?hl=zh-CN&tab=wi
http://video.google.cn/?hl=zh-CN&tab=wv
http://ditu.google.cn/maps?hl=zh-CN&tab=wl
http://news.google.cn/nwshp?hl=zh-CN&tab=wn
http://www.google.cn/music?hl=zh-CN&tab=wU
http://wenda.tianya.cn/wenda/?hl=zh-CN&tab=wH
http://laiba.tianya.cn/laiba/Top?hl=zh-CN&tab=wG
http://www.google.cn/intl/zh-CN/options/
/url?sa=p&pref=ig&pval=3&q=http://www.google.cn/ig/china%3Fsource%3Diglk%26hl%3Dzh-CN&usg=AFQjCNE-fPlHBZ4IREs-KKjdCDT7u-BkSw
/preferences?hl=zh-CN
http://www.google.cn/search?hl=zh-CN&source=hp&q=%E6%B8%A9%E5%93%A5%E5%8D%8E2010%E5%B9%B4&btnG=Google+%E6%90%9C%E7%B4%A2&aq=f&oq=
/advanced_search?hl=zh-CN
/language_tools?hl=zh-CN
/aclk?sa=L&ai=COHUX_MSHS5GGJIe67APZ1YGdDpvhip8Bm4Dy4w_B2ZzZExABIMFUUKzQj4ACYJ0BqgRyT9AXyubQppSOik1N2jZLTzgNFf3oSk8zeN1r_qfnCXmWa95EK5nQAF8KhR8_PxBB7L2gUqR7D10BXJmEPwgB8cBEKsMWJvi_SmOCdtdATchCbNwyBAsjlJq93Brvc55n5_CuvjrNk2N2w3J2fz0Z1Vra&num=1&sig=AGiWqtz_TF-ZN5OkAn_lszxgyfq_UXUFew&q=http://www.google.com/intl/zh-CN/landing/games10/index.html%23utm_campaign%3Dzh-CN%26utm_medium%3Dhpp%26utm_source%3Dhpp-na-us-gns-svn
/intl/zh-CN/ads/
/intl/zh-CN/about.html
http://www.google.com/ncr
/intl/zh-CN/privacy.html
http://www.miibeian.gov.cn/
由于刚刚完成,没有经过严格测试,如果哪位朋友发现BUG的,请与我联系。
分享到:
相关推荐
dom4j是一种解析XML文档的开放源代码XML框架。本文介绍如何使用包含在dom4j中的解析器创建并修改XML文档。dom4j API包含一个解析XML文档的工具。本文中将使用这个解析器创建一个示例XML文档,然后使用同一个解析器...
DOM4J具有性能优异、功能强大和极端易用使用的特点,同时它也是一个开放源代码的软件。如今你可以看到越来越多的Java软件都在使用DOM4J来读写XML,特别值得一提的是连Sun的JAXM(Java API for XML Messaging )也在用...
《JavaScript权威指南》(第5版)全面...本书还包括详细的参考手册,涵盖了JavaScript的核心API、遗留的客户端API和W3C标准DOM API,记述了这些API中的每一个JavaScript对象、方法、性质、构造函数、常量和事件处理程序。
使用boxModel对象检测是否是W3C盒子模型 使用$.each()工具函数遍历数组 使用$.each()工具函数遍历ajaxSettings对象 使用$.grep()工具函数筛选数组中的元素 使用$.map()工具函数变更数组中的元素 使用$.inArray...
这样可以生成给定源代码的完美可移植HTML5 DOM表示形式,并确保与常绿浏览器中的结果兼容。 标准DOM功能(例如querySelector或querySelectorAll适用于树遍历。 :high_voltage: :high_voltage: 从AngleSharp 0.9迁移...
这样可以生成给定源代码的完美可移植HTML5 DOM表示形式,并确保与常绿浏览器中的结果兼容。 标准DOM功能(例如querySelector或querySelectorAll适用于树遍历。 :high_voltage: :high_voltage: 从AngleSharp 0.9...
SVG是由W3C组织开发的基于可扩展标记语言的一种矢量图形描述语言,已经在互联网上得到了较广泛的应用。为了以图形方式直观地显示雨量数据变化,方便工作人员进行雨量数据的查询及分析,设计了本套基于SVG的雨量分析...
SVG是由W3C组织开发的基于可扩展标记语言的一种矢量图形描述语言,已经在互联网上得到了较广泛的应用。为了以图形方式直观地显示雨量数据变化,方便工作人员进行雨量数据的查询及分析,设计了本套基于SVG的雨量分析...
许可证更具体的描述在每个源代码文件的顶部可以找到。 TinyXML在保证正确和恰当的XML输出的基础上尝试成为一个灵活的解析器。TinyXML可以在任何合理的C++适用系统上编译。它不依赖于异常或者运行时类型信息,有...
Boost库是个经过千锤百炼、可移植、提供源代码C库作为标准库后备是C标准化进程发动机的 Boost库由 C标准委员会库工作组成员发起在C社区中影响甚大其成员已近2000人 Boost库为我们带来了最新、最酷、最 实用技术是...
二、DOM对象(参考w3school手册HTML_DOM部分与DHTML参考手册) 1.document ·与标签相关的属性: alinkColor linkColor vlinkColor bgColor fgColor ·描述网页文档信息的属性 charset defaultCharset ...
SVG是由W3C组织开发的基于可扩展标记语言的一种矢量图形描述语言,已经在互联网上得到了较广泛的应用。为了以图形方式直观地显示雨量数据变化,方便工作人员进行雨量数据的查询及分析,设计了本套基于SVG的雨量分析...
SVG是由W3C组织开发的基于可扩展标记语言的一种矢量图形描述语言,已经在互联网上得到了较广泛的应用。为了以图形方式直观地显示雨量数据变化,方便工作人员进行雨量数据的查询及分析,设计了本套基于SVG的雨量分析...
SVG是由W3C组织开发的基于可扩展标记语言的一种矢量图形描述语言,已经在互联网上得到了较广泛的应用。为了以图形方式直观地显示雨量数据变化,方便工作人员进行雨量数据的查询及分析,设计了本套基于SVG的雨量分析...
该包包含公开 W3C 标准 HTML 文档对象模型的类,用于直接在客户端 Java 源代码中以编程方式访问和操作 HTML 页面,考虑到大多数浏览器变体。 这些类提供了一种高效、类型安全且对 IDE 友好的替代方法,可以为许多...
11.3.2.2 showModalDialog和showModelessDialog--非W3C或ECMAScrip标准 11.3.3 状态栏 11.4 框架--上层的Window对象 11.4.1 多框架应用 11.4.2 框架之间的关系 11.4.3 框架的命名 11.4.4 ...
使用我们的编辑器,你可以编辑源代码,然后单击 TIY 按钮来查看结果。 JavaScript 实例 JavaScript Object 实例 HTML DOM 实例 JavaScript 测试 在 W3School 测试你的 JavaScript 技能! 开始 JavaScript 测验 !
javax.xml.transform.dom 此包实现特定于 DOM 的转换 API。 javax.xml.transform.sax 此包实现特定于 SAX2 的转换 API。 javax.xml.transform.stax 提供特定于 StAX 的转换 API。 javax.xml.transform.stream 此...
使用ajax,通过会把服务器端响应获取到reponseText或者reponseXML中的信息,以某种方法动态的写到div和span标记中,这样,可以在无刷新的情况下,改变...这种方式虽然简单,但是目前还不是w3c的标准,不过主流的浏览器
dom加载完后执行,一直不了解,基于对网上的一些方法逻辑不了解,所以去看了《jquery源代码研究(ready函数) 》这篇文章后自己写入如下代码(已有详细说明) 代码如下:<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML ...