xpath的一般用法與特殊用法


# xpath的使用
安裝lxml
from lxml import etree
Selector = etree.HTML(網頁代碼)
Selector.xpath(一段神奇的代碼)

xpath的一般用法
//定位根節點
/表示往下層尋找
/text()提取文本內容
/@***提取屬性

例: response.xpath('//ul[@id="useful"]/li/text()')
中括號[]表示限定ul的條件,這里表示id為useful的ul標簽

xpath的特殊用法

第一種情況:以相同的字符開始的情況,提取以下三個內容難道要寫三次?
解決方法:用starts-with(@屬性名稱,屬性相同的部分)
舉例:
<div id='test-1'>需要的內容1</div>
<div id='test-2'>需要的內容2</div>
<div id='test-fault'>需要的內容3</div>
方案:response.xpath("//div[starts-with(@id, 'test')]/text()")


第二種情況:標簽套標簽,下面的情況如何提取成一句完整的話?div套着的標簽如何提取?
解決方法:string(.)
舉例:
html = '''
<div id="class3">
    我左青龍,
    <span id='tiger'>
        右白虎,
        <ul>上朱雀,
            <li>下玄武.</li>
        </ul>
        老牛在當中,
    </span>
    龍頭在胸口.
</div>
'''
# 方案:
from lxml import etree
selector = etree.HTML(html)
data = selector.xpath('//div[@id="class3"]')[0]
info = data.xpath('string(.)')#實際上是去除了div中間的其他多余標簽
print(info)
content2=info.replace('\n','').replace(' ','')#將換行與空格分別取代
print(content2)

# 輸出結果:我左青龍,右白虎,上朱雀,下玄武.老牛在當中,龍頭在胸口.

 


免責聲明!

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



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