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

Python?文檔解析lxml庫的使用詳解

 更新時間:2022年09月09日 08:46:33   作者:小嗷犬  
lxml 是 Python 常用的文檔解析庫,能夠高效地解析 HTML/XML 文檔,常用于 Python 爬蟲,這篇文章主要介紹了Python?文檔解析:lxml庫的使用,需要的朋友可以參考下

1.lxml庫簡介

lxml 是 Python 常用的文檔解析庫,能夠高效地解析 HTML/XML 文檔,常用于 Python 爬蟲。

lxml 為第三方庫,需要我們通過pip命令安裝:

pip install lxml

2.lxml庫方法介紹

lxml 庫提供了一個 etree 模塊,該模塊專門用來解析 HTML/XML 文檔,讓我們先導入模塊:

from lxml import etree

使用 etree 模塊的 HTML() 方法可以創(chuàng)建 HTML 解析對象:

from lxml import etree
parse_html = etree.HTML(html)

HTML() 方法能夠將 HTML 標簽字符串解析為 HTML 文件,并且可以自動修正 HTML 文本:

from lxml import etree
html_str = '''
<div>
    <ul>
        <li><a href="www.python.org">Python</a></li>
        <li><a href="www.java.com">Java</a>
        <li><a href="www.csdn.net">CSDN</a></li>
    </ul>
</div>
'''

html = etree.HTML(html_str)
# tostring()將標簽元素轉換為字符串輸出,注意:result為字節(jié)類型
result = etree.tostring(html)
print(result.decode('utf-8'))

上述代碼我故意在Java那一行少寫一個</li>,可以看到輸出會自動補全:

<html><body><div>
    <ul>
        <li><a href="www.python.org">Python</a></li>
        <li><a href="www.java.com">Java</a></li>
        <li><a href="www.csdn.net">CSDN</a></li>
    </ul>
</div>
</body></html>

解析為 HTML 文件后,我們可以使用 xpath() 方法來提取我們需要的數據了:

from lxml import etree

html_str = '''
<div>
    <ul>
        <li><a href="www.python.org">Python</a></li>
        <li><a href="www.java.com">Java</a></li>
        <li><a href="www.csdn.net">CSDN</a></li>
    </ul>
</div>
'''

html=etree.HTML(html_str)

xpath_bds='//@href'

r_list = html.xpath(xpath_bds)

print(r_list)

xpath() 方法使用一個 XPath 表達式作為參數,上面那段程序提取出了頁面里的所有網址。

詳細的 XPath 表達式語法,請參見菜鳥教程:
https://www.runoob.com/xpath/xpath-syntax.html

3.代碼實例

lxml 庫在爬蟲中的使用大概就是這么多了,接下讓我們結合前一篇文章(Python 網頁請求:requests庫的使用),來寫一個普通的爬蟲程序吧:

import os
import sys
import requests
from lxml import etree

x = requests.get('https://www.csdn.net/')


html = etree.HTML(x.text)

xpath_bds = '//img/@src'

img_list = html.xpath(xpath_bds)

# 創(chuàng)建img文件夾
os.chdir(os.path.dirname(sys.argv[0]))

if not os.path.exists('img'):
    os.mkdir('img')
    print('創(chuàng)建文件夾成功')
else:
    print('文件夾已存在')

# 下載圖片
for i in range(len(img_list)):
    img = requests.get(img_list[i]).content
    if img_list[i].endswith('.jpg'):
        with open(f'./img/{i}.jpg', 'wb') as f:
            f.write(img)
    elif img_list[i].endswith('.jpeg'):
        with open(f'./img/{i}.jpeg', 'wb') as f:
            f.write(img)
    elif img_list[i].endswith('.png'):
        with open(f'./img/{i}.png', 'wb') as f:
            f.write(img)
    else:
        print(f'第{i + 1}張圖片格式不正確')
        continue
    print(f'第{i + 1}張圖片下載成功')

這個爬蟲程序爬取了CSDN首頁的所有.jpg、.jpeg.png格式的圖片,快來自己嘗試一下吧!

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

相關文章

  • 使用Python進行穩(wěn)定可靠的文件操作詳解

    使用Python進行穩(wěn)定可靠的文件操作詳解

    在本文中,主要分享一些如何在Python代碼中改善I/O可靠性的見解,大家參考使用吧
    2013-12-12
  • 詳解python opencv、scikit-image和PIL圖像處理庫比較

    詳解python opencv、scikit-image和PIL圖像處理庫比較

    這篇文章主要介紹了詳解python opencv、scikit-image和PIL圖像處理庫比較,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-12-12
  • Python調用Zoomeye搜索接口的實現

    Python調用Zoomeye搜索接口的實現

    本文主要介紹了Python調用Zoomeye搜索接口的實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-01-01
  • centos 安裝Python3 及對應的pip教程詳解

    centos 安裝Python3 及對應的pip教程詳解

    這篇文章主要介紹了centos 安裝Python3 及對應的pip的教程,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-06-06
  • Python isinstance函數介紹

    Python isinstance函數介紹

    這篇文章主要介紹了Python isinstance函數介紹,本文用實例講解了判斷變量是否是某個指定類型,需要的朋友可以參考下
    2015-04-04
  • python通過文本在一個圖中畫多條線的實例

    python通過文本在一個圖中畫多條線的實例

    今天小編就為大家分享一篇python通過文本在一個圖中畫多條線的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • python文件讀寫操作小結

    python文件讀寫操作小結

    python文件對象提供了三個“讀”方法:?read()、readline()?和?readlines(),每種方法可以接受一個變量以限制每次讀取的數據量,這篇文章主要介紹了python文件讀寫小結,需要的朋友可以參考下
    2022-02-02
  • Python中使用matplotlib模塊errorbar函數繪制誤差棒圖實例代碼

    Python中使用matplotlib模塊errorbar函數繪制誤差棒圖實例代碼

    在matplotlib中,errorbar方法用于繪制帶誤差線的折線圖,下面這篇文章主要給大家介紹了關于Python中使用matplotlib模塊errorbar函數繪制誤差棒圖的相關資料,需要的朋友可以參考下
    2022-08-08
  • python 編碼中為什么要寫類型注解?

    python 編碼中為什么要寫類型注解?

    這篇文章主要介紹了python 編碼中為什么要寫類型注解,幫助大家更好的理解和學習使用python,感興趣的朋友可以了解下
    2021-03-03
  • Python?切片為什么不會索引越界?

    Python?切片為什么不會索引越界?

    這篇文章主要介紹了Python?切片為什么不會索引越界?切片(slice)是?Python?中一種很有特色的特性,在正式開始之前,我們先來從關于切片的相關知識開始介紹,感興趣的小伙伴一起參考參考呀</P><P>
    2021-12-12

最新評論

资源县| 聊城市| 铜梁县| 淳安县| 肃宁县| 怀安县| 芮城县| 高雄县| 柞水县| 甘泉县| 合水县| 宾阳县| 丹阳市| 麦盖提县| 崇阳县| 昭觉县| 江陵县| 太谷县| 平乐县| 曲松县| 淮滨县| 盖州市| 奉贤区| 蓬溪县| 清镇市| 玉龙| 凉城县| 上思县| 惠来县| 门源| 大安市| 芜湖市| 交口县| 杭锦后旗| 盐亭县| 涪陵区| 仁化县| 惠东县| 砚山县| 抚宁县| 洛扎县|