xpath - python怎么用lxml處理
問題描述
例如:
<p>沒<em><!--red_beg-->aa<!--red_end--></em></p><p>沒<em><!--red_beg-->aa<!--red_end--></em>沒<em><!--red_beg-->aa<!--red_end--></em></p><p>沒</p>
就是在p標(biāo)簽里可能會出現(xiàn)同樣的em標(biāo)簽,而且數(shù)量不定,那我怎么獲取p的內(nèi)容,包括em里的內(nèi)容。例如第二個(gè)p獲取輸出是‘沒aa沒aa’
或者獲取到p節(jié)點(diǎn)之后,怎么把里面的內(nèi)容轉(zhuǎn)換為字符串
問題解答
回答1:今天偶然學(xué)到處理這個(gè)問題的方法,特意翻出來這個(gè)問題回答。題主你可以看一下xpath的軸,比如你要取得第二個(gè)<p>標(biāo)簽的“沒aa沒aa”,實(shí)際是取得它全部后代節(jié)點(diǎn)的文本內(nèi)容,可以使用element_dom.xpath('//p[2]//descendant::text()')來取得,拿到的結(jié)果是一個(gè)這樣[’沒’, ’aa’, ’沒’, ’aa’]的list,然后自己手動拼接成字符串就可以了,比如''.join(list)。同理,如果你需要進(jìn)行其他操作,也可以使用類似的方法。
回答2:換bs4,string和text之間的異同就在這里。
回答3:lxml.html的.text_content()方法,可以獲取當(dāng)前節(jié)點(diǎn)和所有子節(jié)點(diǎn)的文本內(nèi)容。
相關(guān)文章:
1. 關(guān)于nginx location配置的問題,root到底是什么2. docker鏡像push報(bào)錯(cuò)3. angular.js - angular內(nèi)容過長展開收起效果4. 關(guān)于docker下的nginx壓力測試5. angular.js - angularjs的自定義過濾器如何給文字加顏色?6. python 怎樣用pickle保存類的實(shí)例?7. 大家好,請問在python腳本中怎么用virtualenv激活指定的環(huán)境?8. python的前景到底有大?如果不考慮數(shù)據(jù)挖掘,機(jī)器學(xué)習(xí)這塊?9. 并發(fā)模型 - python將進(jìn)程池放在裝飾器里為什么不生效也沒報(bào)錯(cuò)10. python2安裝失敗
