HTML 解析/提取器 woody

Apache
Java 查看源码»
跨平台
2013-09-08
搜索小虫

woody 是一款 Java 的HTML 解析/提取器,用法非常类似 webmagic, 是对其抽取模块完全重写,之所有单独提取出来是因为为来更好可重用。

一些新功能:

  • 多种结果数据类型(String, char, byte, short int, long, double, float, string[], Set, List,Data)
  • 支持用户之定义脚本处理函数(目前支持Javascript 函数配置处理)
  • 支持css,xpath内核替换
  • 支持filter功能
  • 对css,xpath 内核对象的缓存

一个完整的例子:

public class OsChinaBlog {

	public static void main(String[] args) throws Exception {
		Document doc = Jsoup.connect("http://www.oschina.net/news/43879/webmagic-0-3-0").timeout(60000)
				.userAgent("Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:23.0) Gecko/20100101 Firefox/23.0").get();
		String html = doc.html();
		OsChinaBlogModel model = AnnotationExtractor.me().process(html, OsChinaBlogModel.class);
		System.out.println(model.toJson());
	}

	public static class OsChinaBlogModel extends Model {

		public OsChinaBlogModel() {
			//use to reflect
		}

		@Inject
		@ComboExtract(value = { @ExtractBy(value = "h1.OSCTitle", type = ExprType.CSS),
				@ExtractBy(value = "//title/text()", type = ExprType.XPATH) }, op = OP.OR)
		public String title;

		@Inject
		@ExtractBy(value = "div.PubDate a[href~=http://my\\.oschina\\.net/]", type = ExprType.CSS)
		public String author;

		@Inject
		@ExtractBy(value = "发布于.\\s*(\\d+年\\d+月\\d+日)", type = ExprType.REGEX)
		public Date publishDate;

		@Inject
		@ComboExtract(value = {
				@ExtractBy(value = "div.PubDate", type = ExprType.CSS, setting = @Setting(outerHtml = true)),
				@ExtractBy(value = "(\\d+)评", type = ExprType.REGEX) }, op = OP.AND)
		public int commentNum;

		@Inject
		@ExtractBy(value = "span#p_favor_count", type = ExprType.CSS, setting = @Setting(function = @Function(value = "replace", args = {
				"+", "" })))
		public int collectNum;

		@Inject
		@ComboExtract(value = {
				@ExtractBy(value = "div[id=userComments]", type = ExprType.CSS, setting = @Setting(outerHtml = true)),
				@ExtractBy(value = "div.TextContent", type = ExprType.CSS) }, op = OP.AND, multi = true)
		public List commentContents;

		@Inject
		@ExtractBy(value = "div[id=toolbar_wrapper]", setting = @Setting(fliters = { "b", "span" }), type = ExprType.CSS, impl = Document.class)
		public String weibo;

	}
}
的码云指数为
超过 的项目
加载中

评论(0)

暂无评论

暂无资讯

暂无问答

linux正则

grep用法详解 grep与正则表达式 首先要记住的是: 正则表达式与通配符不一样,它们表示的含义并不相同! 正则表达式只是一种表示法,只要工具支持这种表示法, 那么该工具就可以处理正则表达式的...

2016/05/18 22:36
2
2
grep用法详解 grep与正则表达式

正则表达式只是一种表示法,只要工具支持这种表示法, 那么该工具就可以处理正则表达式的字符串。vim、grep、awk 、sed 都支持正则表达式,也正是因为由于它们支持正则,才显得它们强大;在以...

2015/12/21 09:35
58
0
学会用Jigdo下载cd iso和DVD iso

学会用Jigdo下载cd iso和DVD iso(中文版) Debian Jigdo HOWTO (中文版) Peter Jay Salzman p@dirac.org Copyright 2001 by Peter Jay Salzman 翻译:王毓锋 (ipzh@163.net) patched by l...

2010/12/29 11:11
800
0
linux下的eclipse c/c++用root权限调试

今天遇到一个难缠的问题,我在ubuntu下用eclipse调试一个C程序,用到这个sched_setscheduler函数去设置进程的优先级,但是调试的时候发现在我自己的用户下不能调试,因为这个函数需要root权限...

2013/06/17 15:40
1K
0
oracle archive log

to check setting about archive log sqlplus /nolog conn /as sysdba SQL>archive log list SQL>show parameter archive sql>select * from v$archive_processes; sql>select log_mode from...

2012/09/25 09:27
27
0
Schwarz, left, and Tyler M

Schwarz, left, and Tyler M

2015/05/30 13:19
6
0

没有更多内容

加载失败,请刷新页面

返回顶部
顶部