亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python中的Xpath和lxml庫的使用詳解

 更新時(shí)間:2023年12月06日 10:00:55   作者:凌冰_  
這篇文章主要介紹了Python中的Xpath和lxml庫的使用詳解,XPath即 XML路徑語言,它是一門在 XML 文檔中查找信息的語言,最初被用來搜尋 XML 文檔,同時(shí)它也適用于搜索 HTML 文檔,因此,在爬蟲過程中可以使用 XPath 來提取相應(yīng)的數(shù)據(jù),需要的朋友可以參考下

一、Xpath表達(dá)式

XPath(全稱:XML Path Language)即 XML 路徑語言,它是一門在 XML 文檔中查找信息的語言,最初被用來搜尋 XML 文檔,同時(shí)它也適用于搜索 HTML 文檔。

因此,在爬蟲過程中可以使用 XPath 來提取相應(yīng)的數(shù)據(jù)。

Xpath節(jié)點(diǎn):有父、子、同代、先輩、后代節(jié)點(diǎn)

<?xml version="1.0" encoding="utf-8"?>
<shop>
    <book>
      <title lang="zh-CN">java</title>
      <name>Java編程思想</name>
      <year>2011</year>
      <address>www.baidu.com</address>
    </book>
</shop>

說明:

  • title name year address 都是 book 的子節(jié)點(diǎn)
  • book 是 title name year address  父節(jié)點(diǎn)
  • title name year address  屬于同代節(jié)點(diǎn)
  • title 元素的先輩節(jié)點(diǎn)是 book shop
  • shop 的后代節(jié)點(diǎn)是 book title name year address

二、Xpath基本語法

1) 基本語法

2) xpath通配符

xpath('/div/*')選取div下的所有子節(jié)點(diǎn)xpath('/div[@*]')選取所有帶屬性的div節(jié)點(diǎn)

3) 多路徑匹配

xpath表達(dá)式1 | xpath表達(dá)式2 | xpath表達(dá)式3

xpath('//div|//table') 選取所有的div和table節(jié)點(diǎn)

4)功能函數(shù)

三、lxml庫

lxml 是 Python 的第三方解析庫,完全使用 Python 語言編寫,它對 Xpath 表達(dá)式提供了良好的支持,因此能夠了高效地解析 HTML/XML 文檔。

本節(jié)講解如何通過 lxml 庫解析 HTML 文檔。

安裝lxml庫

pip3 install lxml

lxml使用流程

1) 導(dǎo)入模塊

from lxml import etree

2)創(chuàng)建解析對象

parse_html = etree.HTML(html)

3) 調(diào)用xpath表達(dá)式

r_list = parse_html.xpath('xpath表達(dá)式')

4) lxml庫數(shù)據(jù)提取

print(r_list)

四、實(shí)戰(zhàn)案例

豆瓣書店

#豆瓣書店
import requests
from lxml import  etree
 
if __name__ == '__main__':
    url='https://market.douban.com/book/?utm_campaign=book_nav_freyr&utm_source=douban&utm_medium=pc_web'
    headers_={
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"
    }
    res=requests.get(url,headers_)
    # print(res.text)
    html=etree.HTML(res.text)
    #獲取所有的li
    lis=html.xpath('.//li[@class="book-item"]')
    #循環(huán)
    for li in lis:
        #獲取li下的圖片
        img=li.xpath('.//div[@class="panel-img"]/img/@src')[0]
        # print(img)
        # 獲取li下的標(biāo)題
        title = li.xpath('.//div[@class="panel-detail"]/div/h3/text()')[0]
        print(img, title)

到此這篇關(guān)于Python中的Xpath和lxml庫的使用詳解的文章就介紹到這了,更多相關(guān)Python中的Xpath和lxml庫內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • PyCharm中的terminal運(yùn)行從PS修改成cmd方式

    PyCharm中的terminal運(yùn)行從PS修改成cmd方式

    這篇文章主要介紹了PyCharm中的terminal運(yùn)行從PS修改成cmd方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • Python dict字典基本操作(添加、修改、刪除鍵值對)

    Python dict字典基本操作(添加、修改、刪除鍵值對)

    本文主要介紹了Python dict字典基本操作,主要包括字典添加、修改、刪除鍵值對等,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-09-09
  • Python3讀寫Excel文件(使用xlrd,xlsxwriter,openpyxl3種方式讀寫實(shí)例與優(yōu)劣)

    Python3讀寫Excel文件(使用xlrd,xlsxwriter,openpyxl3種方式讀寫實(shí)例與優(yōu)劣)

    這篇文章主要介紹了Python3讀寫Excel文件,使用xlrd,xlsxwriter,openpyxl3種方式讀寫實(shí)例與優(yōu)劣,需要的朋友可以參考下
    2020-02-02
  • 使用pycharm創(chuàng)建Django項(xiàng)目失敗的解決方案

    使用pycharm創(chuàng)建Django項(xiàng)目失敗的解決方案

    使用PyCharm創(chuàng)建Django項(xiàng)目時(shí)遇到無法運(yùn)行的問題,可以檢查Python的安裝路徑設(shè)置是否正確,在PyCharm的設(shè)置中找到項(xiàng)目解釋器的位置,確保路徑正確,如果不確定Python的安裝位置,可以在命令提示符中使用“where Python”命令查詢
    2024-09-09
  • Python網(wǎng)絡(luò)編程之HTTP客戶端模塊urllib與urllib3

    Python網(wǎng)絡(luò)編程之HTTP客戶端模塊urllib與urllib3

    這篇文章介紹了Python網(wǎng)絡(luò)編程之HTTP客戶端模塊urllib與urllib3,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-05-05
  • Python3讀取和處理超大文件的操作詳解

    Python3讀取和處理超大文件的操作詳解

    在日常工作中,文件對象是我們常接觸到的可迭代類型之一,一般用?for?循環(huán)遍歷一個文件對象,可以逐行讀取它的內(nèi)容,但這種方式在碰到大文件時(shí),可能會出現(xiàn)一些奇怪的效率問題,所以本文給大家介紹了Python3讀取和處理超大文件的操作,需要的朋友可以參考下
    2024-04-04
  • Python采集情感音頻的實(shí)現(xiàn)示例

    Python采集情感音頻的實(shí)現(xiàn)示例

    本文主要介紹了Python采集情感音頻的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • python linecache讀取行更新的實(shí)現(xiàn)

    python linecache讀取行更新的實(shí)現(xiàn)

    本文主要介紹了python linecache讀取行更新的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • Django中使用第三方登錄的示例代碼

    Django中使用第三方登錄的示例代碼

    這篇文章主要介紹了Django中使用第三方登錄的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-08-08
  • 詳解Python?中的命名空間、變量和范圍

    詳解Python?中的命名空間、變量和范圍

    Python 是一種動態(tài)類型語言,在程序執(zhí)行期間,變量名可以綁定到不同的值和類型,這篇文章主要介紹了Python?中的命名空間、變量和范圍,需要的朋友可以參考下
    2022-09-09

最新評論