Xpath軸與步長應用:取某節點下所有子孫節點里的文本內容


最近遇到個需求,需要爬一些數據使用,寫好了爬蟲后爬到了一段HTML,然后用lxml解析,接下來就是定位到具體節點提取內容。遇到了一個問題,想要提取的內容在一個class名為full-content的<div>中,文本內容有可能就在div中,也有可能在子孫節點中,那怎么全部提取呢?查了一下Xpath有軸與步長的用法,

詳細用法參考:http://www.w3school.com.cn/xpath/xpath_axes.asp

軸名稱 結果
ancestor 選取當前節點的所有先輩(父、祖父等)。
ancestor-or-self 選取當前節點的所有先輩(父、祖父等)以及當前節點本身。
attribute 選取當前節點的所有屬性。
child 選取當前節點的所有子元素。
descendant 選取當前節點的所有后代元素(子、孫等)。
descendant-or-self 選取當前節點的所有后代元素(子、孫等)以及當前節點本身。
following 選取文檔中當前節點的結束標簽之后的所有節點。
namespace 選取當前節點的所有命名空間節點。
parent 選取當前節點的父節點。
preceding 選取文檔中當前節點的開始標簽之前的所有節點。
preceding-sibling 選取當前節點之前的所有同級節點。
self 選取當前節點。

因此:用以下Xpath表達式解決了問題。

"//div[@class="full-content"]/descendant::text()"

  方法二:

Xpath選取多個路徑也可以用以下方式實現:

A路徑|B路徑

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM