91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python中Xpath 如何使用

發布時間:2020-10-28 02:34:18 來源:億速云 閱讀:161 作者:小新 欄目:編程語言

這篇文章主要介紹了Python中Xpath 如何使用,具有一定借鑒價值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。

xpath速度比較快,是爬蟲在網頁定位中的較優選擇,但是很多網頁前端代碼混亂難以定位,而學習定位也較為不易,這里列出一點編程過程中可能有用的東西。

試驗環境:Python環境,lxml.etree

試驗所使用的html代碼

<!DOCTYPE html>
<html>
<head>
    <title>xpath test</title>
</head>
<body>
<div price="99.8">
    <div>
        <ul>
            <li>時間</li>
            <li>地點</li>
            <li>任務</li>
        </ul>
    </div>
    <div id='testid' data-h="first">
        <h3>這里是個小標題</h3>
        <ol>
            <li data="one">1</li>
            <li data="two">2</li>
            <li data="three">3</li>
        </ol>
        <ul>
            <li code="84">84</li>
            <li code="104">104</li>
            <li code="223">223</li>
        </ul>
    </div>
    <div>
        <h4>這里是H3的內容
            <a href="http://www.baidu.com">百度一下</a>
            <ul>
                <li>test1</li>
                <li>test2</li>
            </ul>
        </h4>
    </div>
    <div id="go">
        <ul>
            <li>1</li>
            <li>2</li>
            <li>3</li>
            <li>4</li>
            <li>5</li>
            <li>6</li>
            <li>7</li>
            <li>8</li>
            <li>9</li>
            <li>10</li>
        </ul>
    </div>
</div>
</body>
</html>

1、匹配某節點下的所有.//

//獲取文檔中所有匹配的節點,.獲取當前節點,有的時候我們需要獲取當前節點下的所有節點,.//一定要結合.使用//,否則都會獲取整個文檔的匹配結果.

2、匹配包含某屬性的所有的屬性值//@lang

print tree.xpath('//@code') #匹配所有帶有code屬性的屬性值
>>['84', '104', '223']

3、選取若干路徑|

這個符號用于在一個xpath中寫多個表達式用,用|分開,每個表達式互不干擾

print tree.xpath('//div[@id="testid"]/h3/text() | //li[@data]/text()') #多個匹配條件
>>[u'\u8fd9\u91cc\u662f\u4e2a\u5c0f\u6807\u9898', '1', '2', '3']

4、 Axes(軸)

child:選取當前節點的所有子元素

>>print tree.xpath('//div[@id="testid"]/child::ul/li/text()') #child子節點定位
>>['84', '104', '223']

>>print tree.xpath('//div[@id="testid"]/child::*') #child::*當前節點的所有子元素
>>[<Element h3 at 0x21bd148>, <Element ol at 0x21bd108>, <Element ul at 0x21bd0c8>]

>>#定位某節點下為ol的子節點下的所有節點
>>print tree.xpath('//div[@id="testid"]/child::ol/child::*/text()') 
>>['1', '2', '3']

attribute:選取當前節點的所有屬性

>>print tree.xpath('//div/attribute::id') #attribute定位id屬性值
>>['testid', 'go']

>>print tree.xpath('//div[@id="testid"]/attribute::*') #定位當前節點的所有屬性
>>['testid', 'first']

ancestor:父輩元素 / ancestor-or-self:父輩元素及當前元素

>>print tree.xpath('//div[@id="testid"]/ancestor::div/@price') #定位父輩div元素的price屬性
>>['99.8']

>>print tree.xpath('//div[@id="testid"]/ancestor::div') #所有父輩div元素
>>print tree.xpath('//div[@id="testid"]/ancestor-or-self::div') #所有父輩及當前節點div元素
>>[<Element div at 0x23fc108>]
>>[<Element div at 0x23fc108>, <Element div at 0x23fc0c8>]

following :選取文檔中當前節點的結束標簽之后的所有節點

#定位testid之后不包含id屬性的div標簽下所有的li中第一個li的text屬性
>>print tree.xpath('//div[@id="testid"]/following::div[not(@id)]/.//li[1]/text()') 
>>['test1']

感謝你能夠認真閱讀完這篇文章,希望小編分享Python中Xpath 如何使用內容對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,遇到問題就找億速云,詳細的解決方法等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

屯留县| 武隆县| 瓦房店市| 红桥区| 安福县| 鹤山市| 漳州市| 焦作市| 东明县| 金山区| 大化| 三穗县| 梅河口市| 大洼县| 陆良县| 朔州市| 通许县| 额敏县| 常山县| 大渡口区| 怀安县| 电白县| 陆丰市| 改则县| 吉木萨尔县| 莎车县| 莱芜市| 荣成市| 义马市| 平远县| 宝山区| 繁峙县| 博客| 随州市| 会昌县| 故城县| 西贡区| 比如县| 舒兰市| 临朐县| 罗甸县|