最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python數(shù)據(jù)XPath使用案例詳解

 更新時(shí)間:2021年09月29日 14:40:20   作者:小緣喵~  
xpath是最常用且最便捷高效的一種解析方式,通用型強(qiáng),其不僅可以用于python語言中,還可以用于其他語言中,數(shù)據(jù)解析建議首先xpath

XPath

XPath即為XML路徑語言(XML Path Language),它是一種用來確定XML文檔中某部分位置的語言。

XPath使用方法

xpath解析原理:

1.實(shí)例化一個(gè)etree的對(duì)象,且需要將被解析的頁面源代碼數(shù)據(jù)加載到該對(duì)象中

2.調(diào)用etree對(duì)象中的xpath方法結(jié)合著xpath表達(dá)式實(shí)現(xiàn)標(biāo)簽的定位和內(nèi)容的捕獲

安裝lxml

pip install -i https://mirrors.aliyun.com/pypi/simple/ lxml

from lxml import etree
tree = etree.parse('./tree.html')  #從本地加載源碼,實(shí)例化一個(gè)etree對(duì)象。必須是本地的文件,不能是字符串
tree = etree.HTML(源碼)           #從互聯(lián)網(wǎng)加載源碼,實(shí)例化etree對(duì)象
#  / 表示從從根節(jié)點(diǎn)開始,一個(gè) / 表示一個(gè)層級(jí),//表示多個(gè)層級(jí)
r = tree.xpath('//div//a')       #以列表的形式返回div下的所有的a標(biāo)簽對(duì)象的地址
r = tree.xpath('//div//a')[1]    #返回div下的第二個(gè)a標(biāo)簽對(duì)象地址
r = tree.xpath('//div[@class="tang"]')   #以列表的形式返回tang標(biāo)簽地址
r = tree.xpath('//div[@class="tang"]//a') #以列表的形式返回tang標(biāo)簽下所有的a標(biāo)簽地址
#獲取標(biāo)簽中的文本內(nèi)容
r = tree.xpath('//div[@class="tang"]//a/text()') #以列表的形式返回所有a標(biāo)簽中的文本
#獲取標(biāo)簽中屬性值
r = tree.xpath('//div//a/@href')   ##以列表的形式返回所有a標(biāo)簽中href屬性值

tree.html

<html lang="en">
    <head>
      <meta charset="utf-8" />
      <meta name="theme-color" content="#ffffff"></meta>
      <title>xpaht測(cè)試</title>
    </head>
    <body>
        <div>
            <p>百里守約</p>
        </div>
        <div class="song">
            <p>前程似錦</p>
        </div>
        <div class="song">
            <p>前程似錦2</p>
        </div>
        <div class="ming">  #后面改了名字
            <p>以夢(mèng)為馬</p>
        </div>  
        <div class="tang">
            <ul>
                <li><a  title='qing'>清明時(shí)節(jié)</a></li>
                <li><a  title='qing'>秦時(shí)明月</a></li>
                <li><a  title='qing'>漢時(shí)關(guān)</a></li>
            </ul>
        </div>
      <flink-root></flink-root>
        <script type="text/javascript" src="runtime.0dcf16aad31edd73d8e8.js"></script>
        <script type="text/javascript" src="es2015-polyfills.923637a8e6d276e6f6df.js"></script>
        <script type="text/javascript" src="polyfills.bb2456cce5322b484b77.js"></script>
        <script type="text/javascript" src="main.8128365baee3dc30e607.js"></script>
    </body>
</html>

案例—58二手房

將頁面中的房源名稱解析出來,即將title值解析出來就行

思路

獲取房源名稱所在的url,并獲取其響應(yīng)數(shù)據(jù)

數(shù)據(jù)解析,構(gòu)造xpath表達(dá)式。提取目標(biāo)數(shù)據(jù)

import requests
from lxml import etree
url = "https://bj.58.com/ershoufang/p1/"
headers={
    'User-Agent':'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Mobile Safari/537.36'
}
pag_response = requests.get(url,headers=headers,timeout=3).text
#實(shí)例化一個(gè)etree對(duì)象
tree = etree.HTML(pag_response)
r = tree.xpath('//span[@class="content-title"]/text()') #獲取所有//span標(biāo)簽為"content-title"的文本內(nèi)容
print(r)

Tips:我們使用xpath進(jìn)行數(shù)據(jù)解析時(shí),不能直接看元素就進(jìn)行構(gòu)造xpath表達(dá)式,以為很多情況下從瀏覽中看的元素結(jié)構(gòu)和爬取下來的源碼結(jié)構(gòu)不一樣。所以正確方法是先將源碼爬下來再觀察進(jìn)行構(gòu)造xpath。

如下瀏覽器中的元素結(jié)構(gòu)和爬取的元素結(jié)構(gòu)就不一樣。如果按照瀏覽器匯總的元素來構(gòu)造xpath表達(dá)式,則不會(huì)解析成功!

以上就是python數(shù)據(jù)XPath使用案例詳解的詳細(xì)內(nèi)容,更多關(guān)于python數(shù)據(jù)XPath使用的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 一文帶你搞懂Python中的描述符(Descriptor)

    一文帶你搞懂Python中的描述符(Descriptor)

    Python是一種動(dòng)態(tài)類型語言,這意味著我們可以在運(yùn)行時(shí)更改對(duì)象的結(jié)構(gòu),這種靈活性有時(shí)可能會(huì)導(dǎo)致問題,例如我們可能無意中改變了一個(gè)屬性的值,為了解決這些問題,Python提供了一個(gè)強(qiáng)大的特性:描述符,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-06-06
  • 利用numpy和pandas處理csv文件中的時(shí)間方法

    利用numpy和pandas處理csv文件中的時(shí)間方法

    下面小編就為大家分享一篇利用numpy和pandas處理csv文件中的時(shí)間方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • 淺談Django中view對(duì)數(shù)據(jù)庫(kù)的調(diào)用方法

    淺談Django中view對(duì)數(shù)據(jù)庫(kù)的調(diào)用方法

    今天小編就為大家分享一篇淺談Django中view對(duì)數(shù)據(jù)庫(kù)的調(diào)用方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • python基于pyDes庫(kù)實(shí)現(xiàn)des加密的方法

    python基于pyDes庫(kù)實(shí)現(xiàn)des加密的方法

    這篇文章主要介紹了python基于pyDes庫(kù)實(shí)現(xiàn)des加密的方法,結(jié)合實(shí)例形式較為詳細(xì)的分析了pyDes庫(kù)的下載、安裝及使用pyDes庫(kù)進(jìn)行加密的相關(guān)操作技巧,需要的朋友可以參考下
    2017-04-04
  • python實(shí)現(xiàn)簡(jiǎn)單銀行管理系統(tǒng)

    python實(shí)現(xiàn)簡(jiǎn)單銀行管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)簡(jiǎn)單銀行管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • python使用ddt過程中遇到的問題及解決方案【推薦】

    python使用ddt過程中遇到的問題及解決方案【推薦】

    在使用DDT數(shù)據(jù)驅(qū)動(dòng)+HTMLTestRunner輸出測(cè)試報(bào)告時(shí)遇到過2個(gè)問題,沒個(gè)問題都很奇葩,下面小編通過本文給大家分享python使用ddt過程中遇到的問題及解決方案,需要的朋友參考下吧
    2018-10-10
  • Flask-SocketIO服務(wù)端安裝及使用代碼示例

    Flask-SocketIO服務(wù)端安裝及使用代碼示例

    這篇文章主要介紹了Flask-SocketIO服務(wù)端安裝及使用代碼示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • Python 寫入訓(xùn)練日志文件并控制臺(tái)輸出解析

    Python 寫入訓(xùn)練日志文件并控制臺(tái)輸出解析

    這篇文章主要介紹了Python 寫入訓(xùn)練日志文件并控制臺(tái)輸出解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • Python獲取協(xié)程返回值的四種方式詳解

    Python獲取協(xié)程返回值的四種方式詳解

    這篇文章主要為大家介紹了Python中獲取協(xié)程返回值的四種方法的示例代碼,文中的代碼詳細(xì)易懂,對(duì)我們學(xué)習(xí)Python有一定的幫助,需要的朋友可以了解一下
    2021-12-12
  • jupyter 導(dǎo)入csv文件方式

    jupyter 導(dǎo)入csv文件方式

    這篇文章主要介紹了jupyter 導(dǎo)入csv文件方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04

最新評(píng)論

合江县| 铜鼓县| 彰武县| 新野县| 纳雍县| 松阳县| 潼关县| 黄山市| 迭部县| 保德县| 屏南县| 毕节市| 彭水| 长丰县| 济阳县| 伊通| 页游| 邮箱| 喀什市| 昭苏县| 怀仁县| 新源县| 双峰县| 会同县| 连云港市| 洪湖市| 汤阴县| 四子王旗| 西盟| 新龙县| 长垣县| 临西县| 中阳县| 邓州市| 东至县| 哈巴河县| 和田县| 章丘市| 岐山县| 汕头市| 黔西|