昨天晚上完成了网页的下载,暂时不用和heritrix打交道了,有空我要好好研究下它的代码,现在没那么多时间。
今天对htmlparser有了初步了解,并自己写了一个简单的可以提取出网页中图片的url的小程序
package test;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import org.htmlparser.NodeFilter;
import org.htmlparser.Parser;
import org.htmlparser.filters.AndFilter;
import org.htmlparser.filters.HasAttributeFilter;
import org.htmlparser.filters.TagNameFilter;
import org.htmlparser.tags.ImageTag;
import org.htmlparser.tags.TableColumn;
import org.htmlparser.util.NodeList;
import org.htmlparser.util.ParserException;
public class Extractor {
private String outputPath;
private String inputPath;
private Parser parse;
public String getOutputPath() {
return outputPath;
}
public void setOutputPath(String outputPath) {
this.outputPath = outputPath;
}
public String getInputPath() {
return inputPath;
}
public void setInputPath(String inputPath) {
this.inputPath = inputPath;
}
public Parser getParse() {
return parse;
}
public void setParse(Parser parse) {
this.parse = parse;
}
public static void main(String args[]) {
Extractor ex = new Extractor();
ex.setInputPath("F:/Workspaces/MyEclipse 7.1/test/src/test/index.html");
ex.setOutputPath("F:/Workspaces/MyEclipse 7.1/test/src/test/");
try {
ex.setParse(new Parser("F:/Workspaces/MyEclipse 7.1/test/src/test/index.html"));
ex.extract();
} catch (ParserException e) {
e.printStackTrace();
}
}
public void extract(){
NodeFilter pic_filter = new AndFilter(new TagNameFilter("td"),
new HasAttributeFilter("class", "series_sy_intro_pic"));
NodeFilter Attribute_filter = new AndFilter(new TagNameFilter("td"),
new AndFilter(new HasAttributeFilter("class", "bor1_c1"),
new HasAttributeFilter("style", "padding:5px;")));
try {
this.getParse().setEncoding("gb2312");
NodeList pic_nodes =this.getParse().parse(pic_filter);
System.out.println("a");
TableColumn tc = (TableColumn) pic_nodes.elementAt(0);
ImageTag it = (ImageTag)(tc.childAt(1).getChildren().elementAt(0));
String imgURL = it.getImageURL();
System.out.println(imgURL);
BufferedWriter bw = new BufferedWriter(new FileWriter(new File(this.getOutputPath()+"aa.txt")));
bw.write(imgURL);
bw.flush();
// for(int i=0;i<pic_nodes.size();i++){
//
// }
// NodeList atr_nodes = this.getParse().parse(Attribute_filter);
//
} catch (ParserException e) {
e.printStackTrace();
} catch (IOException 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....
使用HTMLParser,我们可以解析网页内容,提取所需信息,如文章标题、链接、图片等。以下是一些核心概念和步骤: 1. **创建自定义解析器**: 首先,我们需要继承Python的`HTMLParser`类,并重写其方法,如`handle_...
在描述中提到的“org.htmlparser.Node”和其他的.class文件,这些都是HTMLParser库的核心组成部分。`org.htmlparser.Node` 是HTMLParser中的一个关键接口,它代表HTML文档中的一个节点,可以是元素(Element)、注释...
本项目名为"HTMLParser.net源代码HTMLParser.net使用demo",显然是一个包含示例代码的压缩包,用于展示如何在实际应用中使用HTMLParser.net。 HTMLParser.net的核心功能包括: 1. **HTML解析**:它能够将HTML字符...
`htmlparser.dll`是这个库的动态链接库文件,它包含了编译好的类和方法,可以直接在C#项目中引用以使用HTMLParser的功能。在C#项目中,我们可以通过添加对dll的引用来调用库中的方法,比如解析HTML字符串、查找特定...
htmlparser-1.2.1jar包下载htmlparser-1.2.1jar包下载
在“htmlparser.jar”中,包含了HTMLParser库的所有类和方法,使得开发人员可以将这个库集成到他们的Java项目中。使用jar文件,开发者可以直接导入并使用HTMLParser的API来解析和操作HTML文档。 "htmlparser实现从...
以下是对HTMLParser及其相关知识点的详细说明: 1. HTML解析:HTMLParser的设计目的是为了处理HTML文档的非结构化特性。由于HTML经常存在不规范的情况,如缺少闭合标签、嵌套错误等,HTMLParser通过容错机制,能够...
- **内容过滤**:过滤掉网页中的广告或不相关的信息,提供更纯净的阅读体验。 - **网页测试**:验证网页的结构是否符合预期,帮助开发者调试和修复HTML代码问题。 总之,HTMLParser 1.6作为一个强大且灵活的HTML...
`HtmlParser2003`可能是一个早期版本的源代码,而`AnalyzeHtml`和`WebParser`则可能是演示如何使用HtmlParser的项目。 1. **AnalyzeHtml**:这个项目可能展示了如何分析HTML文档,通过调用HtmlParser的API来提取...
以下是对`HtmlParser`及其相关知识点的详细说明: 1. **HTML解析**:HTMLParser提供了对HTML文档的解析能力,将HTML文本转换为可操作的对象模型。它能够处理嵌套标签、属性、注释以及实体引用等HTML元素。 2. **...
在很多Web抓取、信息提取以及网页分析的项目中,HTMLParser都是一个理想的工具。 HTMLParser库的设计考虑了易用性和灵活性,它提供了丰富的API,允许开发者通过编程方式来访问和操作HTML文档的各个元素,如标签、...
**HtmlParser 2.1 知识点详解** HtmlParser是一个强大的开源库,主要用于解析HTML文档,它在处理不规则的HTML结构时表现出了极高的灵活性和稳定性。这个"HtmlParser 2.1 码源"是该库的2015年6月的最新版本,包含了...
HTMLParser提供了两种主要的解析方式:事件驱动和DOM(Document Object Model)模型。这两个jar包——htmlparser.jar和htmllexer.jar,包含了实现这些功能所需的类和方法。 htmlparser.jar是核心库,它包含了...
在使用Winista.HtmlParser时,首先需要导入插件并实例化解析器。之后,通过调用解析方法,将HTML文本转换为树形结构的节点集合。这些节点代表了HTML文档的各个部分,包括元素节点、文本节点和注释节点等。开发者可以...
3. **错误处理**:HTML文档通常不严格按照规范编写,HTMLParser对此具有一定的容错能力,它可以处理一些语法错误和不完整的标签,为开发者提供更稳定的解析体验。 4. **灵活性**:HTMLParser提供了多种解析模式,...
在网页爬虫开发中,HTMLParser2.1.jar 提供了以下关键知识点: 1. **DOM解析**:HTMLParser2.1支持DOM(Document Object Model)解析方式,将HTML文档转换为树形结构,允许开发者通过节点遍历的方式访问网页元素。...
7. **自定义扩展**:拥有源码意味着我们可以根据需求对HTMLParser进行扩展,添加新的功能,比如增加新的选择器支持,优化性能,或者增强错误处理能力。 8. **集成测试**:虽然没有明确提及,但是一个成熟的库往往会...