jXpath 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
jXpath 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票
jXpath 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」 !
jXpath 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」「最积极运营项目」 !
jXpath 获得 2020 年度 OSC 中国开源项目评选「最积极运营项目」 !
授权协议 GPL
操作系统 跨平台
软件类型 开源软件
开源组织
地区 国产
提 交 者 Chenk_C
适用人群 未知
收录时间 2016-09-30

软件简介

jXpath

一个获取页面某元素在此页面上“唯一xpath”的jQuery插件。

缘由

使用python开发一个爬虫项目,一开始用的bs4,发现bs4中对同一级别的元素支持很差,无论xpath还是css选择器都不太好弄。
后来选择使用py lxml + xpath,毕竟这是最佳之选。可能是我寻找能力有问题,没有找到成熟的获取xpath的插件,或者找到的不太符合自己的需求。
比如Google chrome的F12、还有一个js插件(网络来源,已忘记出处),所以打算自己写一个,自己比较喜欢jQuery,就写了个简单的。

特别处

  • 可使用任意属性获取(与元素高亮冲突)

  • 指定id/class获取

  • id/class共存

  • 对于有些不规范的源码中table不包含tbody元素 而页面自动添加tbody元素的兼容

  • 自动获取元素在xpath规范下的index,比如

    //body/div[id="content"]/div[2]

插件方法

  • 获取xpath:getXpath
    参数

var defaults = {
    keepTbodys: false,    // 保留tbody与否
    isHightLight: true,    //  元素高亮
    mode: "id&class"  // any / id / class / id&class   /
    // 模式 any为任意属,与元素高亮冲突
    // 模式 id ,只元素自己或父元素有id且页面唯一才停止
    // 模式 class ,只元素自己或父元素有class且页面唯一才停止
    // 模式 id&class,可以是id_class等。。只要包含id/class就行,id和class只要唯一就停止搜索
};
  • 获取元素的xpath index:getXpathIndex
    无参

使用范例

var path = $(selector).jQueryGetXpath("getXpath", {
    keepTbodys: true,
    mode: 'id_class',
    isHightLight: true
    });
  • 为了防止点击链接跳转等事件,可以对a标签取消跳转、所有jquery的点击事件都可以进行屏蔽等操作

$('body *').unbind("click");$('body *').click(function (event) {
    var path = $(this).jQueryGetXpath("getXpath", {
        keepTbodys: false,
        mode: 'id_class',
        isHightLight: true
    });
    alert(path);() + 20);
    event.stopPropagation(); // 阻止冒泡
    return false;//阻断后续事件});

使用js验证xpath正确性(可能会出现不一致,但是xpath是正确的)

var path = $(selector).jQueryGetXpath("getXpath", {
    keepTbodys: true,
    mode: "idclass"});var headings = document.evaluate(path, document, null, XPathResult.ANY_TYPE, null);var thisHeading = headings.iterateNext();var xpathText = "";while (thisHeading) {
    xpathText += thisHeading.textContent + "\n";
    thisHeading = headings.iterateNext();}var jQueryText = $(selector).text();if (xpathText.trim() === jQueryText.trim()) {
    alert("校验通过:\n" + xpathText.trim());}else {
    alert("校验未通过:\n xpath:\n" + xpathText + "\n" + "jQuery:\n" + jQueryText);}
展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论 (0)

加载中
更多评论
暂无内容
发表了博客
2012/03/27 18:00

Jakarta Commons:巧用类和组件二(转)

在上一篇文章中,我们将Jakarta Commons的组件分成了五类,并介绍了其中的Web类和其他类,本文接着介绍XML类和包装类,接下来的最后一篇文章将介绍工具类。注意Commons本身并不进行这种分类,这里进行分类纯粹是为组织方便起见。 一、包装类 这一类包含Codec和Modeler两个组件。 1.1 Codec ■ 概况:提供常用的编码器和解码器。 ■ 官方资源:主页,二进制,源代码。 ■ 何时适用:当你需要Base64和Hex编码功能的标准实现之时。...

0
0
发表了博客
2012/02/04 16:40

Apache commons (Java常用工具包)简介

Apache Commons是一个非常有用的工具包,解决各种实际的通用问题,下面是一个简述表,详细信息访问http://jakarta.apache.org/commons/index.html BeanUtils Commons-BeanUtils 提供对 Java 反射和自省API的包装 Betwixt Betwixt提供将 JavaBean 映射至 XML 文档,以及相反映射的服务. Chain Chain 提供实现组织复杂的处理流程的“责任链模式”. CLI CLI 提供针对命令行参数,选项,选项组,强制选项等的简单API. Codec Codec ...

1
21
发表了博客
2019/02/12 16:54

Apache Common

Apache Commons是一个非常有用的工具包,解决各种实际的通用问题,下面是一个简述表,详细信息访问 http://jakarta.apache.org/commons/index.html BeanUtils Commons-BeanUtils 提供对 Java 反射和自省API的包装 Betwixt Betwixt提供将 JavaBean 映射至 XML 文档,以及相反映射的服务. Chain Chain 提供实现组织复杂的处理流程的“责任链模式”. CLI CLI 提供针对命令行参数,选项,选项组,强制选项等的简单API. Codec Codec ...

0
0
发表了博客
2018/05/31 10:38

apache commons api 整理

http://commons.apache.org/proper/commons-bcel/apidocs/index.html http://commons.apache.org/proper/commons-beanutils/javadocs/ http://commons.apache.org/proper/commons-cli/javadocs/ http://commons.apache.org/proper/commons-net/javadocs/ http://commons.apache.org/proper/commons-lang/javadocs/ http://commons.apache.org/proper/commons-codec/apidocs/index.html http://commons.apache.org/proper/common...

0
0
发表了博客
2012/02/07 20:36

Mule ESB 学习笔记(8)

写之前的内容时,Mule刚刚3.0.1版本,很多官方文档还没有更新(尤其示例代码),维持在V2的状态。经过了一年多的时间,Mule社区版发展至了3.2版本,并且推出了Mule Studio可视化开发工具(当前beta状态,支持Mule 3.1.2)。 将以前自己验证的示例代码在3.1.2版本上又跑了一遍(有些变化),在此做一下记录。 一. 服务调用 1. Mule实现并提供Web Service 在Mule上开发并发布一个Web Service供客户端调用。 示例配置 <flow name="...

3
17
发表了博客
2015/02/07 16:15

(转)Apache Commons工具集简介

资料来源:http://www.cnblogs.com/jackyrong/archive/2006/10/15/529599.html Apache Commons包含了很多开源的工具,用于解决平时编程经常会遇到的问题,减少重复劳动。我选了一些比较常用的项目做简单介绍。文中用了很多网上现成的东西,我只是做了一个汇总整理。 一、Commons BeanUtils http://jakarta.apache.org/commons/beanutils/index.html 说明:针对Bean的一个工具集。由于Bean往往是有一堆get和set组成,所以BeanUti...

0
0
发表了博客
2009/05/08 00:19

Apache Commons工具集简介

Commons BeanUtils http://jakarta.apache.org/commons/beanutils/index.html 说明:针对Bean的一个工具集。由于Bean往往是有一堆get和set组成,所以BeanUtils也是在此基础上进行一些包装。 使用示例:功能有很多,网站上有详细介绍。一个比较常用的功能是Bean Copy,也就是copy bean的属性。如果做分层架构开发的话就会用到,比如从PO(Persistent Object)拷贝数据到VO(Value Object)。 传统方法如下: //得到TeacherForm T...

0
5
2015/05/27 13:29

(转)Apache Commons工具集简介

一、Commons BeanUtils http://jakarta.apache.org/commons/beanutils/index.html 说明:针对Bean的一个工具集。由于Bean往往是有一堆get和set组成,所以BeanUtils也是在此基础上进行一些包装。 使用示例:功能有很多,网站上有详细介绍。一个比较常用的功能是Bean Copy,也就是copy bean的属性。如果做分层架构开发的话就会用到,比如从PO(Persistent Object)拷贝数据到VO(Value Object)。 传统方法如下: //得到TeacherFo...

0
25
2015/05/13 13:40

(转)Apache Commons工具集简介

(转)Apache Commons工具集简介 Apache Commons包含了很多开源的工具,用于解决平时编程经常会遇到的问题,减少重复劳动。我选了一些比较常用的项目做简单介绍。文中用了很多网上现成的东西,我只是做了一个汇总整理。 一、Commons BeanUtils http://jakarta.apache.org/commons/beanutils/index.html 说明:针对Bean的一个工具集。由于Bean往往是有一堆get和set组成,所以BeanUtils也是在此基础上进行一些包装。 使用示例:功能...

0
0
发表了博客
2012/12/17 17:42

Apache Commons工具集简介

Apache Commons包含了很多开源的工具,用于解决平时编程经常会遇到的问题,减少重复劳动。我选了一些比较常用的项目做简单介绍。文中用了很多网上现成的东西,我只是做了一个汇总整理。 一、Commons BeanUtils http://jakarta.apache.org/commons/beanutils/index.html 说明:针对Bean的一个工具集。由于Bean往往是有一堆get和set组成,所以BeanUtils也是在此基础上进行一些包装。 使用示例:功能有很多,网站上有详细介绍。一个...

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