淺談python中的xpath用法
由於XPath屬於lxml庫模組,所以首先要安裝庫lxml,可以在命令提示符頁面輸入pip install lxml
xpath 是查詢語言,可以在XML文件中查詢資訊的語言。主要用於在XML文件中通過元素和屬性進行導航來查詢。
xpath的呼叫方法:
from lxml import etree
index_db = """
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>wuliao</title>
</head>
<body>
<ul>
<li>啤酒</li>
<li>飲料</li>
<li>礦泉水</li>
<li>
<a href="http://www.baidu.com">百度</a>
</li>
<li>
<a id="yx" class="shopping" href="https://rpic.douyucdn.cn/asrpic/180727/5096323_2105.jpg">遊戲</a>
</li>
<li>
<a class="shopping" href="https://rpic.douyucdn.cn/asrpic/180727/3857053_2109.jpg">youxi</a>
</li>
</ul>
<p class="first">first_people</p>
<p class="first" id="one">
<span>hello world</span>
</p>
<p class="first sencond" id="two">sencond class</p>
<div class="now">
first_div_element
<p class="third">fourth</p>
<a href="https://www.meishij.net">meishijie</a>
</div>
</body>
</html>
"""
code=etree.HTML(index_db)
print(code)
注意,這裡的code輸出的是一個節點。
result = etree.tostring(code)
print(result)
etree.tostring則可以補全全部的標籤。
xpath的使用基本語法:
1.// 從根節點開始,查詢物件是全文。
2./ 從當前標籤的路徑開始查詢
3.text()獲取當前路徑下的文字
4.@+類名或者id名 查詢類名或者id的名字
5. .一個點表示當前節點
(1)獲取某個標籤的內容
a = code.xpath('//a')
print(a)
for x in a :
print(x.text)
輸出結果:
[<Element a at 0x3046f80>, <Element a at 0x33f0b20>, <Element a at 0x33fe788>, <Element a at 0x33fe828>]
百度
遊戲
youxi
meishijie
a 標籤輸出的是節點。
(2)根據標籤屬性來查詢指定的標籤,獲取指定標籤的屬性
result = code.xpath('//a/@class')
print(result)
result = code.xpath('//a/@id')
print(result)
result = code.xpath('//a/@href')
print(result)
(3)找指定的文字內容
result = code.xpath('//a//text()')
print(result)
注意:/text()是隻找div標籤中的文字,如果div中還有別的子標籤,也有文字的話,是不找的。
result = code.xpath('//div/text()')
print(result)
//text()可以找到本標籤以及所有子標籤的文字
result = code.xpath('//div//text()')
print(result)
(4)獲取指定id名字的標籤的文字
result = code.xpath('//ul/li/a[@id="yx"]/text()')
print(result)
(5)獲取指定類名的文字
result = code.xpath('//a[@class="shopping"]/text()')
print(result)
(6)contains包含指定屬性
result = code.xpath('//div[@class="now"]/p[contains(@class,"third")]/text()')
print(result)
相關文章
- python xpath用法Python
- 淺談Golang中select的用法Golang
- 淺談promise用法Promise
- 淺談vue中provide和inject 用法VueIDE
- 淺談Invoke 和 BegionInvoke的用法
- 淺談我對python中的monkey patchPython
- 淺談Python中的bs4基礎Python
- xPath 用法總結整理
- 淺談Vue-router的部分高階用法Vue
- Python集合淺談Python
- 淺談對python pandas中 inplace 引數的理解Python
- 淺談JavaScript中的thisJavaScript
- 淺談Python中的scrapy的安裝和建立工程。Python
- 淺談Python基礎Python
- 淺談react 中的 this 指向React
- 淺談Java中的HashmapJavaHashMap
- 淺談java中的反射Java反射
- 淺談React中的diffReact
- python中return的用法Python
- python中的eval用法Python
- Python中if的基本用法Python
- 淺談JavaScript中的繼承JavaScript繼承
- 淺談jQuery中的工具方法jQuery
- 淺談Kotlin中的函式Kotlin函式
- 淺談CSS中的Position(定位)CSS
- 淺談Rowid中的行號
- PHPer 淺談 Python 的資料結構PHPPython資料結構
- Python中return self的用法Python
- 淺談Android中LifecycleAndroid
- Python爬蟲-xpathPython爬蟲
- Python爬蟲——XPathPython爬蟲
- selenium中的xpath定位
- 淺談 js 中的 this 指向問題JS
- 淺談Swift中的函式式Swift函式
- 淺談java中的併發控制Java
- 淺談Java中的內部類Java
- 淺談Javascript中的作用域鏈JavaScript
- 淺談 Swift 中的屬性(PropertySwift