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

python數(shù)據(jù)解析之XPath詳解

 更新時間:2021年09月29日 16:40:56   作者:小緣喵~  
本篇文章主要介紹了python數(shù)據(jù)解析之xpath的基本使用詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

XPath

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

xpath是最常用且最便捷高效的一種解析方式,通用型強,其不僅可以用于python語言中,還可以用于其他語言中,數(shù)據(jù)解析建議首先xpath。

XPath使用方法

xpath解析原理:

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

調(diào)用etree對象中的xpath方法結(jié)合著xpath表達式實現(xiàn)標簽的定位和內(nèi)容的捕獲

安裝lxml

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

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

tree.html

<html lang="en">
    <head>
      <meta charset="utf-8" />
      <meta name="theme-color" content="#ffffff"></meta>
      <title>xpaht測試</title>
    </head>
    <body>
        <div>
            <p>百里守約</p>
        </div>
        <div class="song">
            <p>前程似錦</p>
        </div>
        <div class="song">
            <p>前程似錦2</p>
        </div>
        <div class="ming">  #后面改了名字
            <p>以夢為馬</p>
        </div>  
        <div class="tang">
            <ul>
                <li><a  title='qing'>清明時節(jié)</a></li>
                <li><a  title='qing'>秦時明月</a></li>
                <li><a  title='qing'>漢時關(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表達式。提取目標數(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
#實例化一個etree對象
tree = etree.HTML(pag_response)
r = tree.xpath('//span[@class="content-title"]/text()') #獲取所有//span標簽為"content-title"的文本內(nèi)容
print(r)

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

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

總結(jié)

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

  • Pytorch 如何實現(xiàn)常用正則化

    Pytorch 如何實現(xiàn)常用正則化

    這篇文章主要介紹了Pytorch 實現(xiàn)常用正則化的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • python使用PyPDF2 和 pdfplumber操作PDF文件

    python使用PyPDF2 和 pdfplumber操作PDF文件

    本文主要介紹了Python中用于操作PDF的兩個庫:PyPDF2和pdfplumber,下面就來具體介紹一下兩個庫的使用方法,具有一定的參考價值,感興趣的可以了解一下
    2025-01-01
  • Python實現(xiàn)發(fā)票自動校核微信機器人的方法

    Python實現(xiàn)發(fā)票自動校核微信機器人的方法

    這篇文章主要介紹了Python實現(xiàn)發(fā)票自動校核微信機器人的方法,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-05-05
  • Python實現(xiàn)批量自動整理文件

    Python實現(xiàn)批量自動整理文件

    本文將利用Python制作一個批量自動整理文件的小工具,可以自定義整理某一個路徑下面的所有需要被整理的文件。感興趣的小伙伴可以了解一下
    2022-03-03
  • Django自定義分頁效果

    Django自定義分頁效果

    這篇文章主要為大家詳細介紹了Django自定義分頁效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • Python構(gòu)建簡單線性回歸模型

    Python構(gòu)建簡單線性回歸模型

    這篇文章主要介紹了Python構(gòu)建簡單線性回歸模型,線性回歸表示發(fā)現(xiàn)函數(shù)使用線性組合表示輸入變量。簡單線性回歸很容易理解,使用了基本的回歸技術(shù),一旦理解了這些基本概念,可以更好地學(xué)習(xí)其他類型的回歸模型
    2022-08-08
  • Python 3.x基礎(chǔ)實戰(zhàn)檢查磁盤可用空間

    Python 3.x基礎(chǔ)實戰(zhàn)檢查磁盤可用空間

    這篇文章主要為大家介紹了Python 3.x基礎(chǔ)實戰(zhàn)之檢查磁盤可用空間實現(xiàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-05-05
  • 一條命令解決mac版本python IDLE不能輸入中文問題

    一條命令解決mac版本python IDLE不能輸入中文問題

    本文通過一條命令幫助大家解決mac版本python IDLE無法輸入中文問題,需要的朋友可以參考下
    2018-05-05
  • Python單元測試框架unittest簡明使用實例

    Python單元測試框架unittest簡明使用實例

    這篇文章主要介紹了Python單元測試框架unittest簡明使用實例,本文講解了基本測試步驟、和測試實例,需要的朋友可以參考下
    2015-04-04
  • PyCharm中的terminal運行從PS修改成cmd方式

    PyCharm中的terminal運行從PS修改成cmd方式

    這篇文章主要介紹了PyCharm中的terminal運行從PS修改成cmd方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06

最新評論

三台县| 昭苏县| 义马市| 保靖县| 南宫市| 高雄县| 马龙县| 山东省| 曲周县| 疏附县| 平塘县| 秦安县| 沙田区| 达州市| 民乐县| 从化市| 泾阳县| 老河口市| 丰镇市| 酒泉市| 九寨沟县| 松原市| 汉川市| 抚州市| 宁南县| 涿鹿县| 西林县| 涞源县| 古田县| 宁南县| 石渠县| 金秀| 上虞市| 洛川县| 鹤峰县| 丰县| 武乡县| 忻州市| 兴和县| 永川市| 芜湖县|