Xsoup 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
Xsoup 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票
Xsoup 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」 !
Xsoup 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」「最积极运营项目」 !
Xsoup 获得 2020 年度 OSC 中国开源项目评选「最积极运营项目」 !
授权协议 MIT
开发语言 Java
操作系统 跨平台
软件类型 开源软件
所属分类 Web应用开发HTML解析器
开源组织
地区 国产
提 交 者 黄亿华
适用人群 未知
收录时间 2013-09-01

软件简介

Xsoup是基于Jsoup开发的HTML抽取器,提供了XPath支持。

相比另一个常用的基于XPath的HTML抽取器HtmlCleaner,Xsoup有较大的性能优势,解析时间和抽取时间都只有HtmlCleaner的一半。同时Xsoup提供全面的XPath解析错误提示。

示例代码:

@Test
public void testSelect() {
	String html = "<html><div><a href='https://github.com'>github.com</a></div></html>";

	Document document = Jsoup.parse(html);

	String result = Xsoup.select(document, "//a/@href").get();
	Assert.assertEquals("https://github.com", result);

	result = Xsoup.compile("//a/@href").evaluate(document).get();
	Assert.assertEquals("https://github.com", result);
}

展开阅读全文

代码

评论 (5)

加载中
打分: 力荐
干得漂亮
2017/09/01 04:58
回复
举报
黄亿华软件作者
闭关了两个星期,读完了jsoup源码,也读了部分HtmlCleaner源码,不得不说后者的设计(包括性能)还是稍微弱一点。基于Jsoup改了一个Xsoup,同样支持XPath,等到稳定后整合到咱的webmagic里去13
2013/09/01 21:53
回复
举报
黄亿华软件作者
webmagic文档已更新到0.3.2版本,加入了Xsoup和类型转换机制的说明 https://github.com/code4craft/webmagic/blob/master/user-manual.md
2013/09/28 07:55
回复
举报
黄亿华软件作者
Xsoup加入了XPath语法的逻辑运算符and or的支持,并可以括号指定优先级,例如://div[@class=a or class=b]。这下子webmagic又能方便不少。表达式求值用的是栈,话说终于觉得算法知识有点用了…
2014/03/09 00:34
回复
举报
黄亿华软件作者
Xsoup 又加入了'|'的支持,例如"//book/title | //book/price"。0.2.0进入发布倒计时!这下子webmagic又能强大不少。 https://github.com/code4craft/xsoup/issues/6
2014/03/11 01:06
回复
举报
更多评论
发表了资讯
2014/03/11 00:00

Xsoup 0.2.0 发布,HTML 抽取器

Xsoup 是一款基于 Jsoup 开发的,使用XPath抽取Html元素的工具。它被用于作者的爬虫框架 WebMagic 中,进行XPath 解析和抽取。 此次更新主要增加了一些XPath语法的支持。 增加contains支持 #2: //div[contains(@id,'test')] 增加筛选条件的逻辑运算支持(and/or) #4: //div[@id='test' or @class='test'] //div[@id='test' and @class='test'] //div[@id='test' and @class='test' or @id='test1'] //div[@id='test' ...

4
53
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了博客
2013/09/04 15:17

想要在webmagic中自定义一门爬虫语言

早在开始开发webmagic之前,就一直在思考,如何让爬虫的描述变得简单? 单条表达式描述一个抽取规则的诱惑是相当大的,这样子注解、配置、动态生成,都非常容易展开了。有个朋友做过一个管理后台,就是指定一个抽取字段,填一条XPath,一个抽取器就产生了。可惜XPath有些时候不那么灵活,还得用上正则这些东西。 自己写一个DSL始终太费劲,而XPath某种程度已经够好了。CSS Selector看起来很美,但是其语法的简单性使得描述一些复...

0
3
发表了博客
2019/04/10 10:10

WebMagic 实现爬虫入门教程

本示例实现某电影网站最新片源名称列表及详情页下载地址的抓取。 webmagic是一个开源的Java垂直爬虫框架,目标是简化爬虫的开发流程,让开发者专注于逻辑功能的开发。 WebMagic 特点: 完全模块化的设计,强大的可扩展性。 核心简单但是涵盖爬虫的全部流程,灵活而强大,也是学习爬虫入门的好材料。 提供丰富的抽取页面API。 无配置,但是可通过POJO+注解形式实现一个爬虫。 支持多线程。 支持分布式。 支持爬取js动态渲染的页面...

0
0
发表了博客
2019/08/11 13:11

WebMagic

WebMagic 是干嘛的? WebMagic 是一个 Java 平台上的开源爬虫框架,其设计参考了 Scrapy,实现则参考了 HttpClient 和 Jsoup。其由四大组件组成: Downloader,负责下载网页,使用 HttpClient。 PageProcessor,负责解析网页和链接发现,使用 Jsoup 和 Xsoup。 Scheduler,负责管理待抓取的 URL 和去重。 Pipeline,负责结果数据的持久化。 快速开始 (1)依赖引入 ext { versions = [ "web_magic": '0.7.3' ] } depen...

0
0
发表于DevOps专区
2016/04/09 10:02

WebMagic-使用入门

原文出自:http://webmagic.io/docs/zh 访问经常出错,于是把文档转到自己博客里 基本的爬虫 在WebMagic里,实现一个基本的爬虫只需要编写一个类,实现PageProcessor接口即可。这个类基本上包含了抓取一个网站,你需要写的所有代码。 同时这部分还会介绍如何使用WebMagic的抽取API,以及最常见的抓取结果保存的问题。 实现PageProcessor 这部分我们直接通过GithubRepoPageProcessor这个例子来介绍PageProcessor的编写方式。我将...

0
1
2016/08/05 17:36

教你使用爬虫爬取你想要的图片

今天在菜鸟教程上看bootstrap教程时,手抖了一下就跑到他们首页了,然后就看到了下面这些小图标, 然后我就特想把它们搞下来!最后...我就把它们全都搞下来了 当然我不可能一个一个的手动给下载下来,接下来就是今天的正主了-爬虫。 爬虫框架在网上一查就有很多很多,因为之前也没搞过爬虫,对这些框架也不是很了解,最后也是定位到webmagic,一是因为文档很清晰,二是因为简单!简单就是最好! 以下摘抄自webmagic官方文档: ...

0
0
发表于数据库专区
2019/12/09 14:40

WebMagic 实现爬虫入门教程

本示例实现某电影网站最新片源名称列表及详情页下载地址的抓取。 webmagic是一个开源的Java垂直爬虫框架,目标是简化爬虫的开发流程,让开发者专注于逻辑功能的开发。 ## WebMagic 特点: - 完全模块化的设计,强大的可扩展性。 - 核心简单但是涵盖爬虫的全部流程,灵活而强大,也是学习爬虫入门的好材料。 - 提供丰富的抽取页面API。 - 无配置,但是可通过POJO+注解形式实现一个爬虫。 - 支持多线程。 - 支持分布式。 - 支持爬...

0
0
2014/04/09 18:41

WebMagic的设计思想

### 1.1 WebMagic的设计思想 本文是WebMagic文档的一部分。系列文章写完后,会整合到[WebMagic新版文档](http://code4craft.github.io/webmagic-in-action/)中。 ![logo](https://raw.github.com/code4craft/webmagic/master/assets/logo.jpg) #### 1. 一个框架,一个领域 一个好的框架必然凝聚了领域知识。WebMagic的设计参考了业界最优秀的爬虫Scrapy,而实现则应用了HttpClient、Jsoup等Java世界最成熟的工具,目标就是做一个...

1
30
发表了博客
2014/03/28 00:43

大白痴学习webmagic

刚刚开始学,很多东西可能理解错了,还请各位指教 一些基本类: Request:包含要爬行的url和一些附加信息,是Page的一个成员变量 主要成员变量 String url Map<String, Object> extras 存储附加信息 long priority 优先级 值越大越优先 主要方法 Request(String url) { this.url = url; }构造函数 Request setPriority(long priority) 设置优先级需要PriorityScheduler管理 Object getExtra(String key)获取想要的附加信息 通过k...

5
10
发表于DevOps专区
2016/04/09 10:02

WebMagic-介绍

原文出自:http://webmagic.io/docs/zh 访问经常出错,于是把文档转到自己博客里 WebMagic概览 1.1 WebMagic的设计思想 一个框架,一个领域 一个好的框架必然凝聚了领域知识。WebMagic的设计参考了业界最优秀的爬虫Scrapy,而实现则应用了HttpClient、Jsoup等Java世界最成熟的工具,目标就是做一个Java语言Web爬虫的教科书般的实现。 如果你是爬虫开发老手,那么WebMagic会非常容易上手,它几乎使用Java原生的开发方式,只不过提...

0
1
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了问答
2013/10/17 20:02

xsoup的xpath抽取数据问题

@黄亿华 你好,想跟你请教个问题: xpath 抽取数据时,发现很多网站xpath不稳定(是否有数据都影响xpath结构)。这个让我很郁闷。 我思考应该可以在两个方向研究一下: 1、对抓取到的html进行清洗(比如,删除一些结构,注入id等等),使xpath稳定 2、利用xpath的高级语法(这个只是猜想,还不确定) 是否有啥建议啊?谢谢了~~~

3
0
发表了问答
2013/10/14 20:30

关于xsoup的一个问题

@黄亿华 你好,想跟你请教个问题: 今天用xsoup的xpath来解析html,有一个疑问: xsoup里包装了Element,但设置为私有,无法在外面访问,你提供了ElementOperator类去操作,但对于复杂点的情况,比如要迭代子元素 时,感觉还是操作jsoup的Element方便些 对此你有什么建议?我现在是改了你的代码,提供访问Element的方法。

1
0
发表了问答
2013/09/06 14:51

xpath获取的内容有差异

@黄亿华 黄大,求解释: @Test public void testSelect() { String html = "<html><div><a href='https://github.com'>github.com</a></div></html>"; Document document = Jsoup.parse(html); String result = Xsoup.select(document, "//a/@href").get(); ... } 就拿上边的代码举例,假如我想要取得div标签下的所有内容,在webmagic0.2.1中用xpath表达式"//div"就可以,而升级到0.3.0用Xsoup之后,"//div"获取...

4
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
5 评论
55 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部