// 获取一个网页上所有的链接和图片链接
public
static void extracLinks(String url) {
try {
Parser
parser = new Parser(url);
parser.setEncoding("gb2312");
//过滤
<frame> 标签的 filter,用来提取 frame 标签里的 src 属性所、表示的链接
NodeFilter frameFilter = new NodeFilter() {
public boolean
accept(Node node) {
if (node.getText().startsWith("frame
src=")) {
return true;
} else {
return false;
}
}
};
//OrFilter
来设置过滤 <a> 标签,<img> 标签和 <frame> 标签,三个标签是 or 的关系
OrFilte rorFilter = new OrFilter(new NodeClassFilter(LinkTag.class), new
NodeClassFilter(ImageTag.class));
OrFilter linkFilter = new OrFilter(orFilter, frameFilter);
//得到所有
经过过滤的标签
NodeList list =
parser.extractAllNodesThatMatch(linkFilter);
for (int i = 0; i <
list.size(); i++) {
Node tag = list.elementAt(i);
if (tag
instanceof LinkTag)//<a> 标签
{
LinkTag link =
(LinkTag) tag;
String linkUrl = link.getLink();//url
String text = link.getLinkText();//链接文字
System.out.println(linkUrl + "**********" + text);
}
else
if (tag instanceof ImageTag)//<img> 标签
{
ImageTag
image = (ImageTag) list.elementAt(i);
System.out.print(image.getImageURL() + "********");//图片地址
System.out.println(image.getText());//图片文字
}
else//<frame> 标签
{
//提取 frame 里 src 属性的链接如 <frame
src="test.html"/>
String frame = tag.getText();
int
start = frame.indexOf("src=");
frame = frame.substring(start);
int end = frame.indexOf(" ");
if (end == -1)
end = frame.indexOf(">");
frame = frame.substring(5, end -
1);
System.out.println(frame);
}
}
} catch
(ParserException e) {
e.printStackTrace();
}
}
分享到:
相关推荐
META-INF/maven/org.htmlparser/htmlparser/pom.properties META-INF/maven/org.htmlparser/htmlparser/pom.xml org.htmlparser.Parser.class org.htmlparser.PrototypicalNodeFactory.class org.htmlparser.beans....
它广泛应用于搜索引擎优化、数据分析、市场研究等多个领域。 在Python中,HTMLParser是内置的HTML解析器,它允许开发者编写自定义的事件驱动的解析器来处理HTML或XML文档。使用HTMLParser,我们可以解析网页内容,...
通过研究这些示例代码,开发者可以了解如何在自己的.NET项目中集成HTMLParser.net,以解析和操作HTML文档。例如,如何创建一个解析器实例,如何使用CSS选择器选取元素,如何监听解析事件等。这些示例将帮助新手快速...
在描述中提到的“org.htmlparser.Node”和其他的.class文件,这些都是HTMLParser库的核心组成部分。`org.htmlparser.Node` 是HTMLParser中的一个关键接口,它代表HTML文档中的一个节点,可以是元素(Element)、注释...
`htmlparser.dll`是这个库的动态链接库文件,它包含了编译好的类和方法,可以直接在C#项目中引用以使用HTMLParser的功能。在C#项目中,我们可以通过添加对dll的引用来调用库中的方法,比如解析HTML字符串、查找特定...
### HTMLParser提取网页超链接研究 #### 一、引言 随着互联网技术的快速发展和普及,全球信息资源呈爆炸式增长。在这个过程中,各种互联网搜索引擎(例如百度、谷歌等)应运而生,它们极大地便利了人们获取所需...
htmlparser-1.2.1jar包下载htmlparser-1.2.1jar包下载
2. **基本概念**:理解HTMLParser的核心类,如`HTMLDocument`和`Node`,以及它们在解析HTML时的作用。 3. **解析HTML**:学习如何使用`HTMLParser`实例解析HTML字符串或从URL读取HTML内容。这通常涉及到创建`Parser...
2. **WebParser**:可能是一个简单的网页抓取器,利用HtmlParser解析网页,提取所需信息,例如新闻标题、链接等。 开发者可以打开`AnalyzeHtml.sln`,编译并运行这两个项目,以了解HtmlParser的具体使用方法和实际...
2. DOM模型:HTMLParser基于DOM模型工作,将HTML文档转换为一棵节点树。每个HTML元素、属性和文本都对应于树中的一个节点,这使得通过遍历节点来查找和修改HTML内容变得容易。 3. 解析事件驱动:HTMLParser采用事件...
在`parse5-master`这个压缩包中,很可能包含了parse5库的源码和相关资源,你可以通过阅读源码、查看示例和文档来更深入地理解这个库的工作原理,以及如何有效地使用`parse5-htmlparser2-tree-adapter`。同时,熟悉这...
2. **DOM(Document Object Model)**:HTMLParser基于DOM模型工作,这意味着它会构建一个树形结构来表示HTML文档,其中每个节点代表HTML的一个部分,如元素、属性或文本。用户可以通过遍历DOM树来访问和修改HTML...
2. **解析API**:HTMLParser提供了一系列的类和接口,如`HTMLDocType`,`HTMLTag`和`HTMLParserListener`,它们共同构成了强大的解析API。开发者可以通过这些API实现对HTML文档的深度解析和定制化操作。 3. **错误...
说明了htmlparser2.0的相关事项,同时也给出了htmlparser2.0的api
在很多Web抓取、信息提取以及网页分析的项目中,HTMLParser都是一个理想的工具。 HTMLParser库的设计考虑了易用性和灵活性,它提供了丰富的API,允许开发者通过编程方式来访问和操作HTML文档的各个元素,如标签、...
2. **解析器模式** HtmlParser提供了两种主要的解析器模式:`SAX-like`(类似SAX的)和`DOM-like`(类似DOM的)。SAX-like模式逐个事件处理,适合处理大型文档,内存占用低;DOM-like模式则将整个HTML结构加载到...
* 浏览器前端:作为浏览器的前端,用于显示网页的初步阶段。 * 连接检查:检查连接是否有效。 * 站点监控:检查网页的变化。 HTMLParser 提供了多种机制来帮助实现这些功能,例如 filters、visitors 和 JavaBeans。...
2. **事件驱动解析**:除了DOM,HTMLParser2.1也支持事件驱动的解析模式。在这种模式下,解析器在遇到HTML标签、属性、文本等时会触发相应的事件,开发者可以注册监听器来处理这些事件。这种方式对内存友好,尤其...