標籤:套餐 store www 根據 ref 尋找 lang asp 通配
目錄
- 1、安裝 Xpath
- 2、Xpath基本使用
- 3、Xpath文法
- 3.1、常用的路徑運算式
- 3.2、根據謂語尋找特定元素
- 3.3、萬用字元
- 3.4、選擇多個路徑
1、安裝 Xpath
pip install lxml
2、Xpath基本使用
from lxml import etreehtml = ‘‘‘<p class="drink">飲料套餐 <a class="drink" id="coffee">咖啡</a> <a class="drink" id="milk">牛奶</a></p>‘‘‘selector = etree.HTML(html)content = selector.xpath(‘//a[@id="coffee"]/text()‘)print(content)
3、Xpath文法3.1、常用的路徑運算式
| 運算式 |
描述 |
| nodename |
選取此節點的所有子節點。 |
| / |
從根節點選取。 |
| // |
從匹配選擇的當前節點選擇文檔中的節點,而不考慮它們的位置。 |
| . |
選取當前節點。 |
| .. |
選取當前節點的父節點。 |
| @ |
選取屬性。 |
| 路徑運算式 |
結果 |
| bookstore |
選取 bookstore 元素的所有子節點。 |
| /bookstore |
選取根項目 bookstore。注釋:假如路徑起始於正斜杠( / ),則此路徑始終代表到某元素的絕對路徑! |
| bookstore/book |
選取屬於 bookstore 的子項目的所有 book 元素。 |
| //book |
選取所有 book 子項目,而不管它們在文檔中的位置。 |
| bookstore//book |
選擇屬於 bookstore 元素的後代的所有 book 元素,而不管它們位於 bookstore 之下的什麼位置。 |
| //@lang |
選取名為 lang 的所有屬性。 |
3.2、根據謂語尋找特定元素
| 路徑運算式 |
結果 |
| /bookstore/book[1] |
選取屬於 bookstore 子項目的第一個 book 元素。 |
| /bookstore/book[last()] |
選取屬於 bookstore 子項目的最後一個 book 元素。 |
| /bookstore/book[last()-1] |
選取屬於 bookstore 子項目的倒數第二個 book 元素。 |
| /bookstore/book[position()<3] |
選取最前面的兩個屬於 bookstore 元素的子項目的 book 元素。 |
| //title[@lang] |
選取所有擁有名為 lang 的屬性的 title 元素。 |
| //title[@lang=‘eng‘] |
選取所有 title 元素,且這些元素擁有值為 eng 的 lang 屬性。 |
| /bookstore/book[price>35.00] |
選取 bookstore 元素的所有 book 元素,且其中的 price 元素的值須大於 35.00。 |
| /bookstore/book[price>35.00]/title |
選取 bookstore 元素中的 book 元素的所有 title 元素,且其中的 price 元素的值須大於 35.00。 |
3.3、萬用字元
| 萬用字元 |
描述 |
| * |
匹配任何元素節點。 |
| @* |
匹配任何屬性節點。 |
| node() |
匹配任何類型的節點。 |
| 路徑運算式 |
結果 |
| /bookstore/* |
選取 bookstore 元素的所有子項目。 |
| //* |
選取文檔中的所有元素。 |
| //title[@*] |
選取所有帶有屬性的 title 元素。 |
3.4、選擇多個路徑
- 通過在路徑運算式中使用“|”運算子,您可以選取若干個路徑。
| 路徑運算式 |
結果 |
| //book/title | //book/price |
選取 book 元素的所有 title 和 price 元素。 |
| //title | //price |
選取文檔中的所有 title 和 price 元素。 |
| /bookstore/book/title | //price |
選取屬於 bookstore 元素的 book 元素的所有 title 元素,以及文檔中所有的 price 元素。 |
參考資料:
W3School的XPath 教程
13_Python_解析庫_Xpath的使用