Python爬蟲必備之Xpath簡介及實例講解
前言
網(wǎng)上已經(jīng)有很多大佬發(fā)過Xpath,而且講的都很好,我是因為剛開始學(xué)習(xí)網(wǎng)絡(luò)爬蟲,對這些基礎(chǔ)重要知識不太了解,所以寫一下來加深印象,本篇文章只是簡單介紹一下Xpath及使用,總體來說比較基礎(chǔ)。
一、Xpath簡介
XPath(XML Path Language - XML路徑語言),它是一種用來確定XML文檔中某部分位置的語言。
Xpath以XML為基礎(chǔ),提供用戶在數(shù)據(jù)結(jié)構(gòu)樹中尋找節(jié)點的能力,Xpath被很多開發(fā)者親切的稱為小型查詢語言。
二、Xpath語法規(guī)則
xpath可以使用路徑表達式在XML上選取節(jié)點,從而達到確認元素的目的,我們先來介紹以下語法規(guī)則。
語法規(guī)則
| 表達式 | 作用 |
|---|---|
| nodename | 選取此層級節(jié)點下的所有子節(jié)點 |
| / | 代表從根節(jié)點進行選取 |
| // | 可以理解為匹配,就是在所有節(jié)點中選取此節(jié)點,直到匹配為止 |
| . | 選取當前節(jié)點 |
| … | 選取當前節(jié)點上一層(上一級目錄) |
| @ | 選取屬性(也是匹配) |
標簽定位
| 方式 | 效果 |
|---|---|
| /html/body/div | 表示從根節(jié)點開始尋找,標簽與標簽之間/表示一個層級 |
| /html//div | 表示多個層級 作用于兩個標簽之間(也可以理解為在html下進行匹配尋找標簽div) |
| //div | 從任意節(jié)點開始尋找,也就是查找所有的div標簽 |
| ./div | 表示從當前的標簽開始尋找div |
屬性定位
| 需求 | 格式 |
|---|---|
| 定位div中屬性名為href,屬性值為‘www.baidu.com’的div標簽 | @屬性名=屬性值 |
| href為屬性名 'www.baidu.com’為屬性值 | /html/body/div[href=‘www.baidu.com’] |
索引定位
| 需求 | 格式 |
|---|---|
| 定位ul下第二個li標簽(下圖) | //ul/li[2] |
| 索引值開始位置為 | 1 |
取文本內(nèi)容
| 方法 | 效果 |
|---|---|
| /text() | 獲取標簽下直系的標簽內(nèi)容 |
| //text() | 獲取標簽中所有的文本內(nèi)容 |
| string() | 獲取標簽中所有的文本內(nèi)容 |
在網(wǎng)頁上獲取Xpath其實很容易,直接找到標簽后,右鍵復(fù)制就好了。

三、語法規(guī)則練習(xí)
接下來我們開始練習(xí)一下本地導(dǎo)入,加深一下理解,這個是一個比較簡單的網(wǎng)頁結(jié)構(gòu),我們先學(xué)會用法即可。

任務(wù)要求: 可以達到隨心所欲的定位每一個元素
準備工作
#導(dǎo)入所需要的包
from lxml import etree
#采用本地源碼獲取方式并加載到etree內(nèi)
tree = etree.parse('test.html')
1.獲取百度、谷歌、搜狗文本內(nèi)容
#引用xpath方法并進行標簽定位
#''.join是取字符串內(nèi)的內(nèi)容
text = ' '.join(tree.xpath('/html/body/ul/li/a/text()'))
print(text)

2.獲取單個谷歌
text1 = tree.xpath("http://ul/li[2]/a/text()")[0]
print(text1)

3.獲取北京、上海、天津的屬性值
text2 = ' '.join(tree.xpath("http://ol/li/a/@href"))
print(text2)

4.獲取河南文本
#獲取河南文本
text3 = tree.xpath("/html/body/div[2]/text()")[0]
print(text3)

5.獲取谷歌屬性值
text4 = tree.xpath("http://ul/li[2]/a/@href")[0]
print(text4)

至此我們已經(jīng)可以隨心定位任意標簽 完成任務(wù) 收工
總結(jié)
到此這篇關(guān)于Python爬蟲必備之Xpath簡介及實例的文章就介紹到這了,更多相關(guān)Python爬蟲Xpath實例內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
用Python自動清理電腦內(nèi)重復(fù)文件,只要10行代碼(自動腳本)
這篇文章主要介紹了用Python自動清理電腦內(nèi)重復(fù)文件,只要10行代碼,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-01-01
Python使用redis pool的一種單例實現(xiàn)方式
這篇文章主要介紹了Python使用redis pool的一種單例實現(xiàn)方式,結(jié)合實例形式分析了Python操作redis模塊實現(xiàn)共享同一個連接池的相關(guān)技巧,需要的朋友可以參考下2016-04-04

