日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

xpath选择器简介及如何使用

發布時間:2023/11/27 生活经验 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 xpath选择器简介及如何使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

xpath選擇器簡介及如何使用

一、總結

一句話總結:XPath 的全稱是 XML Path Language,即 XML 路徑語言,它是一種在結構化文檔(比如 XML 和 HTML 文檔)中定位信息的語言,XPath 使用路徑表達式來選取 XML 文檔中的節點或節點集。節點是通過沿著路徑 (path) 或者步 (steps) 來選取的。

?

1、xpath如何使用?

19 xml=loadXMLDoc("/example/xmle/books.xml"); 20 path="/bookstore/book/title"  32 // code for Mozilla, Firefox, Opera, etc. 33 else if (document.implementation && document.implementation.createDocument) 34 { 35 var nodes=xml.evaluate(path, xml, null, XPathResult.ANY_TYPE, null); 36 var result=nodes.iterateNext(); 37 38 while (result)

?

2、插件如何使用?

其實所有的插件的使用無非就是以下步驟:

1、引入插件

2、調用函數

?

?

?

二、xpath選擇器

XPath 的全稱是 XML Path Language,即 XML 路徑語言,它是一種在結構化文檔(比如 XML 和 HTML 文檔)中定位信息的語言,XPath 使用路徑表達式來選取 XML 文檔中的節點或節點集。節點是通過沿著路徑 (path) 或者步 (steps) 來選取的。

?

?

XPath 是一門在 XML 文檔中查找信息的語言。XPath 可用來在 XML 文檔中對元素和屬性進行遍歷。

?

XPath 是 W3C XSLT 標準的主要元素,并且 XQuery 和 XPointer 都構建于 XPath 表達之上。

?

因此,對 XPath 的理解是很多高級 XML 應用的基礎。

?

?

1. 語法

1.1 HTML 實例文檔

后面我們將以下面的 HTML 文檔介紹 XPath 的使用 http://doc.scrapy.org/en/latest/_static/selectors-sample1.html。

<html><head><basehref='http://example.com/' /><title>Example website</title></head><body><divid='images'><ahref='image1.html'>Name: My image 1 <br/><imgsrc='image1_thumb.jpg'/></a><ahref='image2.html'>Name: My image 2 <br/><imgsrc='image2_thumb.jpg'/></a><ahref='image3.html'>Name: My image 3 <br/><imgsrc='image3_thumb.jpg'/></a><ahref='image4.html'>Name: My image 4 <br/><imgsrc='image4_thumb.jpg'/></a><a>Name: My image 5 <br/><imgsrc='image5_thumb.jpg'/></a></div></body></html>

1.2 選取節點

下表是 XPath 常用的語法,實例對應的是上面的 HTML 文檔。

表達式描述實例結果
nodename選取此節點的所有子節點body選取 body 元素的所有子節點
/從根節點選取/html選取根元素 html
//匹配選擇的當前節點,不考慮位置//img選取所有 img 元素,而不管它們在文檔的位置
.選取當前節點./img選取當前節點下的 img 節點
..選取當前節點的父節點../img選取當前節點的父節點下的 title
@選取屬性//a[@href=”image1.html”]選取所有 href 屬性為 “image1.html” 的 a 節點
??//a/@href獲取所有 a 節點的 href 屬性的值

1.3 謂語

謂語用來查找某個特定的節點或者包含某個指定的值的節點,謂語嵌在方括號中。

路徑表達式結果
//body//a[1]選取屬于 body 子元素的第一個 a 元素
//body//a[last()]選取屬于 body 子元素的最好一個 a 元素
//a[@href]選取所有擁有名為 href 的屬性的 a 元素
//a[@href=’image2.html’]選取所有 href 屬性等于 “image2.html” 的 a 元素

?

2. 在 Python 中使用

python 中使用 XPath 需要安裝相應的庫,這里推薦使用 lxml 庫。

代碼示例:

# -*- coding: utf-8 -*-from lxml import etreehtml = """<html><head><base href='http://example.com/' /><title>Example website</title></head><body><div id='images'><a href='image1.html'>Name: My image 1 <br/><img src='image1_thumb.jpg'/></a><a href='image2.html'>Name: My image 2 <br/><img src='image2_thumb.jpg'/></a><a href='image3.html'>Name: My image 3 <br/><img src='image3_thumb.jpg'/></a><a href='image4.html'>Name: My image 4 <br/><img src='image4_thumb.jpg'/></a><a>Name: My image 5 <br/><img src='image5_thumb.jpg'/></a></div></body>
</html>"""

from lxml import etree
soup = etree.HTML(html)
page=soup.xpath('/html/head/base/@href') #從根節點開始選取
page=soup.xpath('/html/head//@href') #也可以這樣選擇結果是相同的
#//表示從當前節點開始選擇,不必考慮位置。
#選取title下所有文本
page=soup.xpath("//title/text()")
#選取HTML下所有a節點
page=soup.xpath('//a')
#選取標簽下屬性為image.html的scr屬性
page=soup.xpath("//a[@href='image1.html']/img/@src")
#選取a標簽下第三個href屬性
page=soup.xpath("//a[contains(@href, '3')]/@href")
#body最后一個a標簽href屬性
page=soup.xpath("//body//a[last()]/img/@src")
page=soup.xpath('//a[@class="active"][@id="value"]/img/@src') #多個屬性定位

?

3.常用函數

?

除了索引、屬性外,Xpath還可以使用便捷的函數來增強定位的準確性。下面試常用的幾個函數:

?

?

 

<a class="menu_hot" href="/ads/auth/promote.html">應用推廣</a>

?

#定位href屬性中包含“promote.html”的所有a節點
//a[contains(@href,'promote.html')]#元素內的文本為“應用推廣”的所有a節點
//a[text()='應用推廣']#href屬性值是以“/ads”開頭的所有a節點
//a[starts-with(@href,'/ads')]

參考:xpath選擇器 - moon的博客 - CSDN博客
https://blog.csdn.net/qq_32942549/article/details/78400675

?

?

三、xpath使用實例

1、操作的xml(books.xml)

<?xml version="1.0" encoding="ISO-8859-1"?><bookstore><book category="COOKING"><title lang="en">Everyday Italian</title><author>Giada De Laurentiis</author><year>2005</year><price>30.00</price>
</book><book category="CHILDREN"><title lang="en">Harry Potter</title><author>J K. Rowling</author><year>2005</year><price>29.99</price>
</book><book category="WEB"><title lang="en">XQuery Kick Start</title><author>James McGovern</author><author>Per Bothner</author><author>Kurt Cagle</author><author>James Linn</author><author>Vaidyanathan Nagarajan</author><year>2003</year><price>49.99</price>
</book><book category="WEB"><title lang="en">Learning XML</title><author>Erik T. Ray</author><year>2003</year><price>39.95</price>
</book></bookstore>

?

?

2、需求及代碼

選取所有 title

下面的例子選取所有 title 節點:

/bookstore/book/title
 1 <html>
 2 <body>
 3 <script type="text/javascript">
 4 function loadXMLDoc(dname)
 5 {
 6 if (window.XMLHttpRequest)
 7   {
 8   xhttp=new XMLHttpRequest();
 9   }
10 else
11   {
12   xhttp=new ActiveXObject("Microsoft.XMLHTTP");
13   }
14 xhttp.open("GET",dname,false);
15 xhttp.send("");
16 return xhttp.responseXML;
17 }
18 
19 xml=loadXMLDoc("/example/xmle/books.xml");
20 path="/bookstore/book/title"
21 // code for IE
22 if (window.ActiveXObject)
23 {
24 var nodes=xml.selectNodes(path);
25 
26 for (i=0;i<nodes.length;i++)
27   {
28   document.write(nodes[i].childNodes[0].nodeValue);
29   document.write("<br />");
30   }
31 }
32 // code for Mozilla, Firefox, Opera, etc.
33 else if (document.implementation && document.implementation.createDocument)
34 {
35 var nodes=xml.evaluate(path, xml, null, XPathResult.ANY_TYPE, null);
36 var result=nodes.iterateNext();
37 
38 while (result)
39   {
40   document.write(result.childNodes[0].nodeValue);
41   document.write("<br />");
42   result=nodes.iterateNext();
43   }
44 }
45 </script>
46 
47 </body>
48 </html>

?

3、結果

Harry Potter
Everyday Italian
Learning XML
XQuery Kick Start

?

轉載于:https://www.cnblogs.com/Renyi-Fan/p/9810656.html

總結

以上是生活随笔為你收集整理的xpath选择器简介及如何使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。