利用python爬虫(part7)--初识Xpath之Node节点
學習筆記
編輯器:Sublime
PS:因為爬蟲接觸Xpath,由于HTML的語法和XML很類似,所以這里想把Xpath都應用在HTML中。注意,這里我們用python進行分析,會使用lxml模塊。
注意:這里的理論部分是關于XML文檔的,但是介于HTML和XML的相似性,大家可以自行做類比,有的地方我也會用HTML和XML做類比。
文章目錄
- Xpath簡介
- Node節點
- 節點之間的關系
- 節點的類型
- 節點的名字與值
Xpath簡介
Xpath語言的核心是給出用于從XML文檔中查找標記的語法規則,即編寫Xpath路徑表達式,以便使應用程序更加方便、快捷地從XML文件中檢索到所需要的的數據。
- Xpath路徑表達式
一個Xpath路徑表達式,簡稱Xpath表達式,由若干"定位步"所構成。Xpath路徑表達式的核心是給出一個匹配XML文件中標記的模式,也可以說Xpath路徑表達式的核心是滿足一定條件的標記所組成的集合。
這里我們結合一個簡單的HTML文檔,來了解一下Xpath路徑表達式:
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>title</title> </head> <body><div class="animal"><p class="name"><a title="Tiger"></a></p><p class="content">Two tigers two tigers run fast</p></div><div class="animal"><p class="name"><a title="Rabbit"></a></p><p class="content">Small white rabbit white and white</p></div></body> </html>Xpath路徑表達式:
/html/body/div[1]/following::div/p/a/@title這個表達式是啥意思呢?注意!!它表示:返回test10.html文件中html根標記下,body子節點的第一個div子節點的div弟節點中,p子節點的a子節點的屬性節點。。。。嗯,感覺這樣表達不是很清晰。。。所以還是繼續學后續知識點吧,學了就差不多明白了
python代碼:
from lxml import etreewith open('test10.html', 'rb') as f:html = f.read().decode('utf-8')#print(html) parse_html = etree.HTML(html) title_list = parse_html.xpath('/html/body/div[1]/following::div/p/a/@title') print(title_list)Sublime輸出:
['Rabbit'] [Finished in 0.4s]可以!我們匹配到了。
Node節點
Xpath語言把XML文件中的標記、標記所包含的文本等組成的數據結構看做是一個樹形結構,即將XML文件看做是由Node類型節點構成的樹。Node節點又可以細分為Document、Element、Text、Attribute等節點。
節點之間的關系
Xpath語言經常用表面節點之間的關系術語:子節點、父節點、子孫節點、兄節點、弟節點、兄弟節點等。
一個節點的子節點也稱為1級子節點,節點的1級子節點的子節點稱為該節點的2級父節點,以此類推,節點的任何級別的子節點被稱為該節點的子孫節點。
一個節點的父節點也稱為1級父節點,節點的1級父節點的父節點稱為該節點的2級父節點,以此類推,節點的任何級別的父節點被稱為該節點的祖先節點。
一個節點的兄節點,是指和該節點具有相同級別,并且是該節點之前的某個節點;而一個節點的弟節點,則是與該節點具有相同級別,并且是該節點之后的某個節點;一個節點的兄弟節點是指和該節點具有相同級別的某個節點。
節點的類型
Xpath將XML文件看做是由Node類型節點構成的樹。Node節點可以細分為Document、Element、Text、Attribute等節點。下面我們先看一張XML文件的結構圖:
類比于HTML(方便之后用Xpath匹配HTML文件):
- Document節點
Xpath語言將整個XML文件看成一個樹形結構數據,并把XML文件作為該樹的根節點,而這個根節點是Document類型的節點。Xpath將整個XML文件中的處理指令、根標記、根標記的子孫標記以及標記包含的文本看做是Document根節點的子孫節點。
- Element節點
Xpath語言將XML文件中的每個標記看做是一個Element節點。
- Text節點
Xpath語言將XML文件的標記中包含的文本看做一個Text節點,且該Text節點包含的文本內容就是它所對應的文本。
- Attribute節點
Xpath語言將XML文件中標記含有的屬性看做一個Attribute節點。由于XML文件中的標記和屬性是關聯關系,因此Attribute節點不是Element節點的子節點,但是Attribute節點將與其關聯的Element節點看成自己的父節點。
- Comment節點
Xpath語言將XML文件中的注釋看做一個Comment節點,注釋節點所包含的文本內容就是注釋中的內容。
節點的名字與值
| Document | #document | null |
| Element | 標記的名字 | null |
| Text | #text | 節點在XML中對應的文本 |
| Attribute | 屬性的名字 | 屬性的值 |
| Comment | #comment | 注釋的內容 |
自學筆記,有錯請求指出!
總結
以上是生活随笔為你收集整理的利用python爬虫(part7)--初识Xpath之Node节点的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 海皇牙在哪抓(在线新华字典)
- 下一篇: 2017十大最受欢迎ip游戏排行榜:青云