一文掌握Python爬蟲XPath語法
本文轉自微信公眾號:”算法與編程之美”
一、問題描述
1.什麼是XPath?
xpath
是一門在XML
和HTML
文檔中查找信息的語言,可用來在XML
和HTML
文檔中對元素和屬性進行遍歷,XPath 通過使用路徑表達式來選取 XML
文檔中的節點或者節點集。這些路徑表達式和在常規的電腦文件系統中看到的表達式非常相似。
二、解決方案
1.XPath語法
想要學好xpath
,首先要搞明白html
文檔中的節點。
<div> <ul> <li class="item-0"><a href="link1.html" rel="external nofollow" >first item</a></li> <li class="item-1"><a href="link2.html" rel="external nofollow" >second item</a></li> <li class="item-inactive"><a href="link3.html" rel="external nofollow" >third item</a></li> <li class="item-1"><a href="link4.html" rel="external nofollow" >fourth item</a></li> <li class="item-0"><a href="link5.html" rel="external nofollow" >fifth item</a> # 註意,此處缺少一個 </li> 閉合標簽 </ul> </div>
以上是在網上隨便找的一段html的文本,可以觀察得到,div的標簽下是ul標簽,而ul標簽下是li標簽,於是發現html的標簽是一級一級如樹狀的。Xpath正是通過這樣的方式去尋找。以生活中舉例,要確定一個人的位置,首先確定他在中國,然後確定他在某個省份,哪座城市,那個小區,最後找到他。
表達式 |
描述 |
Nodename |
選取此節點的所有子節點 bookstore 選取bookstore下所有的子節點 |
/ |
如果是在最前面,代表從根節點選取。否則選擇某節點下的某個節點 /bookstore 選取根元素下所有的bookstore節點 |
// |
從全局節點中選擇節點,隨便在哪個位置 //book 從全局節點中找到所有的book節點 |
@ |
選取某個節點的屬性 //book[@price] 選擇所有擁有price屬性的book節點 |
. |
當前節點 |
Text() |
獲取標簽中的文本 |
同級標簽可以用li[1]
,li[2]
,li[3]
的方式獲取
2.lxml庫
簡單介紹一下lxml
庫,接下來會用到它
lxml
是一個HTML
/XML
的解析器,主要的功能是如何解析和提取HTML
/XML
數據。
lxml
和正則一樣,也是用C實現的,是一款高性能的PythonHTML
/XML
解析器,可以利用之前學習的XPath語法,來快速的定位特定元素以及節點信息。
3.實際案例
隨便爬取一個網站,找到找到網站的html
文本
如下圖:
要找到title
和href
,仔細觀察可以得到路徑分別是//div[@id="resultList"]/div[@class="el"]/p/span/a/@title
//div[@id="resultList"]/div[@class="el"]/p/span/a/@href
運行如下:
三、結語
Xpath
,是在爬蟲中常見的提取數據的方式之一,相比於正則,它更加簡單一些,便於操作,xpath
的難點在於準確的確定數據所在的位置。
到此這篇關於一文掌握Python爬蟲XPath語法的文章就介紹到這瞭,更多相關Python爬蟲XPath語法內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- python 實現添加標簽&打標簽的操作
- Python爬蟲必備之XPath解析庫
- Python數據提取-lxml模塊
- Python爬蟲之解析HTML頁面詳解
- Python xpath,JsonPath,bs4的基本使用