Xpath string()提取多個子節點中的文本

<div>
    <ul class="show">
        <li>275萬購昌平鄰鐵三居 總價20萬買一居</li>
        <li>00萬內購五環三居 140萬安家東三環</li>
        <li>北京首現零首付樓盤 53萬購東5環50平</li>
        <li>京樓盤直降5000 中信府 公園樓王現房</li>
    </ul>
</div>

我想要把所有li標籤中的文本提取出來,並且放到一個字符串中.
在網上查了下發現使用xpath的string()函數可以實現(string()和text()的區別請自行google)
先看下常見的方法:

>>> from lxml import etree
...
>>> result = html.xpath("//div/ul[@class='show']")[0]
>>> result.xpath('string(.)')
 '                 275萬購昌平鄰鐵三居 總價20萬買一居                 00萬內購五
環三居 140萬安家東三環                 北京首現零首付樓盤 53萬購東5環50平
  京樓盤直降5000 中信府 公園樓王現房  

這是我查到的多數人使用的方法,還有人使用了concat()函數,更麻煩就不提了.
但是上面的匹配明顯感覺可以寫到一條xpath裏面的,爲什麼非要分開寫!忍不住吐槽一下

xpath string()函數的調用寫法:

>>> html.xpath("string(//div/ul[@class='show'])")
'                 275萬購昌平鄰鐵三居 總價20萬買一居                 00萬內購五
環三居 140萬安家東三環                 北京首現零首付樓盤 53萬購東550平
  京樓盤直降5000 中信府 公園樓王現房             '

再吐槽下上面那種寫法.在xpath語法裏面,點(.)表示當前節點,當前節點不就是html.xpath(“//div/ul[@class=’show’]”)[0]取到的節點元素嗎!!!

轉自

  1. https://www.cnblogs.com/thunderLL/p/8038927.html
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章