xpath 是一門在 xml 文件中查詢資訊的語言。xpath 用於在 xml 文件中通過元素和屬性進行導航。
相比於beautifulsoup
,xpath
在提取資料時會更加的方便。
在python中很多庫都有提供xpath
的功能,但是最基本的還是lxml
這個庫,效率最高。在之前beautifulsoup
章節中我們也介紹到了lxml
是如何安裝的。
pip install lxml
xpath 使用路徑表示式在 xml 文件中選取節點。節點是通過沿著路徑或者 step 來選取的。
我們將用以下的html文件來進行演示:
html_doc = '''head>
everyday italiantitle>
giada de laurentiisauthor>
2005year>
30.00price>
book>
harry pottertitle>
j k. rowlingauthor>
2005year>
29.99price>
book>
xquery kick starttitle>
james mcgovernauthor>
per bothnerauthor>
kurt cagleauthor>
james linnauthor>
vaidyanathan nagarajanauthor>
2003year>
49.99price>
book>
learning xmltitle>
erik t. rayauthor>
2003year>
39.95price>
book>
bookstore>
body>
html>'''
from lxml import etreepage = etree.html(html_doc)
表示式描述
nodename
選取此節點的子節點。
/從根節點擊取。
//從匹配選擇的當前節點擊擇文件中的節點,而不考慮它們的位置。
.選取當前節點。
..選取當前節點的父節點。
@選取屬性。
表示式結果
nodename[1]
選取第乙個元素。
nodename[last()]
選取最後乙個元素。
nodename[last()-1]
選取倒數第二個元素。
nodename[position()<3]
選取前兩個子元素。
nodename[@lang]
選取擁有名為 lang 的屬性的元素。
nodename[@lang='eng']
選取擁有lang屬性,且值為 eng 的元素。
萬用字元描述
*匹配任何元素節點。
@*匹配任何屬性節點。
通過在路徑表示式中使用「|」運算子,您可以選取若干個路徑。
in [1]: page.xpath('//book[1]/title/text() | //book[1]/author/text()')out[1]: ['everyday italian', 'giada de laurentiis']
Python爬蟲(三) 網頁解析
所需庫from bs4 import beautifulsoup專案 示例html askurl 獲取頁面html文字 soup beautifulsoup html,html.parser 使用html解析來處理html變數 變數名 item1 soup.find all article 匹配ar...
python爬蟲 五 網頁解析器
網頁解析器 是從網頁中提取有價值資料的工具 python 有四種網頁解析器 1 正規表示式 模糊匹配解析 2 html.parser 結構化解析 3 beautiful soup 結構化解析 4 lxml 結構化解析 其中 beautiful soup 功能很強大,有html.parse和 lxml...
python爬蟲專項(2) 網頁結構剖析
以豆瓣網為例 1 瀏覽器 谷歌瀏覽器 chrome 2 開啟開發者模式 右鍵 檢查 3 檢視源 右鍵 檢視網頁源 2.1 乙個簡單的框架圖 2.2 爬蟲基本邏輯 一 分頁網頁url採集 資料資訊網頁url採集 資料採集 該邏輯1個資料資訊網頁採集1條資料 第一步 分頁網頁url採集 得到乙個分頁的u...