1. 程式人生 > >轉載:Javascript獲取html元素的XPath路徑(選擇器)

轉載:Javascript獲取html元素的XPath路徑(選擇器)

XPath 是一門在 XML 文件中查詢資訊的語言,是一個功能強大的選擇器。

如果後臺需要

XPath路徑採集結構化資料,我們如何從瀏覽器端獲得所需元素路徑?

function readXPath(element) {
    if (element.id!==""){//判斷id屬性,如果這個元素有id,則顯 示//*[@id="xPath"]  形式內容
        return '//*[@id=\"'+element.id+'\"]';
    }

    if (element.getAttribute("class")!==null){ //判斷class屬性,如果這個元素有class,則顯 示//*[@class="xPath"]  形式內容


        return '//*[@class=\"'+element.getAttribute("class")+'\"]';
    }
    //因為Xpath屬性不止id和class,所以還可以更具class形式新增屬性


    if (element==document.body){//遞迴到body處,結束遞迴
        return '/html/'+element.tagName;
    }


    var ix= 0,//在nodelist中的位置,且每次點選初始化
          siblings= element.parentNode.childNodes;//同級的子元素



    for (var i= 0,l=siblings.length; i<l; i++) {
        var sibling= siblings[i];
        if (sibling==element){//如果這個元素是siblings陣列中的元素,則執行遞迴操作
            return arguments.callee(element.parentNode)+'/'+element.tagName+((ix+1)==1?'':'['+(ix+1)+']');//ix+1是因為xpath是從1開始計數的,element.tagName+((ix+1)==1?'':'['+(ix+1)+']')三元運算子,如果是第一個則不顯示,從2開始顯示

        }else if(sibling.nodeType==1 && sibling.tagName==element.tagName){//如果不符合,判斷是否是element元素,並且是否是相同元素,如果是相同的就開始累加
            ix++;
        }
    }
};

例項中使用:

<h1>無</h1>
<div>
    <div>
        <p>無ID和class</p>
        <p>無ID和class2</p>
        <p id="xpath1">id</p>
    </div>
    <div>無</div>
    <div>
        <div class="xpath2">class</div>
    </div>
</div>

用jquery寫的,當滑鼠點選一個元素時,顯示元素的xpath路徑

$(document).ready(function () {
    var xpath = '', o;
    $('*').click(function (e) {
        e.stopPropagation();//停止冒泡
        o = this;
        alert(readXPath(o));
    });
});

相關推薦

轉載Javascript獲取html元素XPath路徑選擇

XPath 是一門在 XML 文件中查詢資訊的語言,是一個功能強大的選擇器。 如果後臺需要 XPath路徑採集結構化資料,我們如何從瀏覽器端獲得所需元素路徑? function readXPath(element) {     if (element.id!==""){//判斷id屬性,如果這個

Javascript獲取html元素的幾種方法

nbsp code tel html元素 參數 ctype regex head html 1.通過id獲取html元素 <!DOCTYPE html> <html> <head lang="en"> <me

CsQuery獲取IDomObject元素的完整CSS選擇

cccccc reac result contains () strings border sselect 版權信息 一、方法說明 通過IDomObject元素,獲取完整的CSS選擇器,過濾HTML和BODY元素,自動將class、id添加到選擇器上,優先添加class,無

LintCode785. 最大權值和路徑動態規劃

思路:這是一道典型的動態規劃題,思路類似於揹包問題,dp中每個元素的值分別是來自於該位置上方和該位置右邊的較大的一個值,新建dp矩陣,int[][] dp=new int[row+1][col+1]。注意是從右上角開始到左下角結束,狀態轉移方程為 dp[i][j]=max(d

jquery應用—— 查詢元素相關選擇

子元素選擇器: // 大前提: 所選的 都是 修飾div的... div 是它父元素(沒有限定)的第一個孩子嗎?是最後一個孩子嗎?是第index個孩子嗎?是唯一的孩子嗎? $('div:first-child') // 匹配所有為第一個元素的div

前端之CSSCSS選擇 前端之css樣式選擇。。。

前端之css樣式(選擇器)。。。 一、css概述 CSS是Cascading Style Sheets的簡稱,中文稱為層疊樣式表,對html標籤的渲染和佈局

JavaScript中提供獲取HTML元素位置的屬性

瀏覽器 var func set height cti fse 屬性 turn HTMLElement.offsetLeft HTMLElement.offsetHeight 但 是需要註意的是,這兩個屬性所儲存的數值並不是該元素相對整個瀏覽器畫布的絕對位置,而是相對於其父

JavaScript】 JS中獲取HTML元素值的三種方法

JavaScript中獲取HTML元素值的三種方法 JS獲取DOM元素的方法(8種): 通過ID獲取(getElementById) 通過name屬性(getElementsByName) 通過標籤名(getElementsByTagName) 通過類

javascript獲取id元素

title 運算符 logs pos 所有 www 解決辦法 htm 不能 function $(id){ return document.getElementById(id); }導致所有的js不能用解決辦法。。。。 function $(id){   retu

javaScript獲取頁面元素

否則 如果 存在 常見 世界 使用 back script () 用JavaScript獲取頁面元素常見的三種方法: getElementById()

javascript獲取上一訪問頁面

lba shc app load() load pre oca 標簽 新窗口 原文鏈接:移動端返回上一頁,剛需!document.referrer 詳解 全文如下: 返回上一頁,在PC端我們可以使用:history.go(-1)或者history.back(),可以正常返回

轉載】動態生成html元素並為元素追加屬性

追加內容 min utf-8 color meta rep lin type ctype 動態生成HTML元素的方法有三種: 第一種:document.createElement()創建元素,再用appendChild( )方法將元素添加到指定節點 1 <!DOC

Javascript獲取頁面元素的位置

bound 網頁 fire ror back 部分 right etl 分網 制作網頁的過程中,你有時候需要知道某個元素在網頁上的確切位置。 下面的教程總結了Javascript在網頁定位方面的相關知識。 一、網頁的大小和瀏覽器窗口的大小 首先,要明確兩個基本概念。

[javascript]javascript取得html元素,取得html樣式,修改html樣式

一.取得html元素 詳情見:https://www.jb51.net/article/116460.htm 1.通過ID獲取(getElementById) document.getElementById('id')   2.通過name屬性(getElementsByName

JavaScript - 獲取頁面元素的四種方法

測試原始碼 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> </head>

Web開發——JavaScriptjQuery HTML——獲取/設定內容和屬性DOM操作 續,需要整合在一起

  3.2 text()、html() 以及 val()的回撥函式   上面的三個 jQuery 方法:text()、html() 以及 val(),同樣擁有回撥函式。回撥函式由兩個引數:被選元素列表中當前元素的下標,以及原始(舊的)值。然後以函式新值返回您希望使用的字串。   下面的例子演示

Web開發——JavaScriptjQuery HTML——獲取/設定內容和屬性DOM操作

  jQuery 擁有可操作 HTML 元素和屬性的強大方法。 1、jQuery DOM 操作   jQuery 中非常重要的部分,就是操作 DOM 的能力。   jQuery 提供一系列與 DOM 相關的方法,這使訪問和操作元素和屬性變得很容易。   提示:DOM = Document Object

Python程式設計itemgetter獲取字典元素和groupby分組

itemgetter獲取字典元素 groupby分組 程式碼示例 from itertools import groupby from operator import itemgetter d1 = {"name": "Tom", "age": 23, "country": "

關於C# 使用Xpath路徑HtmlAgilityPack對網頁內容查詢獲取的方法。(程式為.ashx的一般處理程式)

先貼程式碼: using System; using System.Web; using Newtonsoft.Json; using System.Net; using System.IO; using System.Text; using System.Text.Reg

getElementById Vs getElementsByName Javascript 細說HTML元素的ID和N

也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!                getElementById Vs getElementsByName(Javascript)細說HTML元素的ID和Name屬性的區別ID(getElemen