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

Python解析HTML的常用方法及工具

 更新時間:2026年04月01日 09:43:17   作者:五步晦暝  
本文介紹了Python解析HTML的五種方法及工具,包括BeautifulSoup、lxml、PyQuery、html.parser和正則表達(dá)式,每種工具的特點、適用場景和示例代碼都有詳細(xì)介紹,并給出了方法對比、注意事項及性能優(yōu)化建議,需要的朋友可以參考下

以下是 Python 解析 HTML 的常用方法及工具,適用于數(shù)據(jù)提取、網(wǎng)頁抓取等場景:

1. 使用BeautifulSoup+ 解析器(推薦)

特點:簡單易用,支持靈活的節(jié)點遍歷和搜索,依賴第三方解析器(如 lxml、html.parser)。

安裝

pip install beautifulsoup4
# 推薦搭配 lxml 解析器(性能更好)
pip install lxml

示例

from bs4 import BeautifulSoup

html = """
<html>
  <body>
    <div id="content">Hello World</div>
    <a  rel="external nofollow"  rel="external nofollow" >Link</a>
  </body>
</html>
"""

soup = BeautifulSoup(html, 'lxml')  # 使用 lxml 解析器

# 提取元素
div = soup.find('div', id='content')
print(div.text)  # 輸出:Hello World

# 獲取鏈接
link = soup.find('a')['href']
print(link)  # 輸出:https://example.com

# 提取所有 <a> 標(biāo)簽
all_links = soup.find_all('a')
for a in all_links:
    print(a['href'], a.text)

2. 直接使用lxml

特點:高性能,支持 XPath 和 CSS 選擇器,適合處理復(fù)雜 HTML。

安裝

pip install lxml

示例

from lxml import etree

html = """
<html>
  <body>
    <div class="item">Apple</div>
    <div class="item">Banana</div>
  </body>
</html>
"""

tree = etree.HTML(html)

# 通過 XPath 提取數(shù)據(jù)
items = tree.xpath('//div[@class="item"]/text()')
print(items)  # 輸出:['Apple', 'Banana']

# 使用 CSS 選擇器
divs = tree.cssselect('div.item')
for div in divs:
    print(div.text)

3. 使用PyQuery(類似 jQuery 語法)

特點:語法類似 jQuery,適合熟悉前端開發(fā)的用戶。

安裝

pip install pyquery

示例

from pyquery import PyQuery as pq

html = """
<div class="container">
  <p class="text">Text 1</p>
  <p class="text">Text 2</p>
</div>
"""

doc = pq(html)

# 選擇元素
texts = doc('.text').items()
for item in texts:
    print(item.text())  # 輸出:Text 1, Text 2

# 獲取屬性
container = doc('.container').attr('class')
print(container)  # 輸出:container

4. 標(biāo)準(zhǔn)庫html.parser

特點:無需安裝第三方庫,但功能和性能較弱。

示例

from html.parser import HTMLParser

class MyParser(HTMLParser):
    def handle_starttag(self, tag, attrs):
        print("Start tag:", tag)
    
    def handle_data(self, data):
        print("Data:", data.strip())

html = "<html><body><h1>Title</h1></body></html>"
parser = MyParser()
parser.feed(html)

# 輸出:
# Start tag: html
# Start tag: body
# Start tag: h1
# Data: Title

5. 正則表達(dá)式(非推薦,慎用)

特點:僅適用于簡單場景,HTML 不規(guī)范時容易出錯。

示例

import re

html = '<a  rel="external nofollow"  rel="external nofollow" >Link</a>'

# 提取鏈接和文本
match = re.search(r'<a href="(.+?)" rel="external nofollow" >(.+?)</a>', html)
if match:
    url = match.group(1)  # https://example.com
    text = match.group(2)  # Link

方法對比

工具優(yōu)點缺點
BeautifulSoup易用性強,支持多種解析器依賴外部庫,性能一般
lxml高性能,支持 XPath/CSS 選擇器學(xué)習(xí)曲線稍高
PyQueryjQuery 風(fēng)格語法,直觀依賴 lxml,生態(tài)較小
html.parser無需安裝第三方庫功能有限,性能差
正則表達(dá)式簡單快速難以處理復(fù)雜嵌套 HTML

注意事項

  1. 編碼問題:如果 HTML 包含中文,需確保解析器正確處理編碼(如指定 encoding='utf-8')。
  2. 性能優(yōu)化:處理大型 HTML 時,優(yōu)先選擇 lxml
  3. 動態(tài) 網(wǎng)頁:若 HTML 由 JavaScript 動態(tài)生成,需結(jié)合 Selenium 或 Playwright 抓取。

以上就是Python解析HTML的常用方法及工具的詳細(xì)內(nèi)容,更多關(guān)于Python解析HTML的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • python繪圖模塊matplotlib示例詳解

    python繪圖模塊matplotlib示例詳解

    這篇文章主要介紹了python繪圖模塊matplotlib示例詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-07-07
  • Python NumPy實現(xiàn)數(shù)組排序與過濾示例分析講解

    Python NumPy實現(xiàn)數(shù)組排序與過濾示例分析講解

    NumPy是Python的一種開源的數(shù)值計算擴展,它支持大量的維度數(shù)組與矩陣運算,這篇文章主要介紹了使用NumPy實現(xiàn)數(shù)組排序與過濾的方法,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2023-05-05
  • Python入門教程5. 字典基本操作【定義、運算、常用函數(shù)】

    Python入門教程5. 字典基本操作【定義、運算、常用函數(shù)】

    這篇文章主要介紹了Python字典基本操作,包括字典的基本定義、運算與常用函數(shù)相關(guān)使用技巧,代碼注釋中備有詳盡說明,便于理解,需要的朋友可以參考下
    2018-11-11
  • python 數(shù)據(jù)提取及拆分的實現(xiàn)代碼

    python 數(shù)據(jù)提取及拆分的實現(xiàn)代碼

    這篇文章主要介紹了python 數(shù)據(jù)提取及拆分的實現(xiàn)代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • Python實現(xiàn)繁體轉(zhuǎn)為簡體的方法示例

    Python實現(xiàn)繁體轉(zhuǎn)為簡體的方法示例

    這篇文章主要介紹了Python實現(xiàn)繁體轉(zhuǎn)為簡體的方法,涉及Python編碼轉(zhuǎn)換相關(guān)操作技巧,需要的朋友可以參考下
    2018-12-12
  • Tensorflow中TFRecord生成與讀取的實現(xiàn)

    Tensorflow中TFRecord生成與讀取的實現(xiàn)

    TFRecord格式的文件存儲形式會很合理的幫我們存儲數(shù)據(jù),本文主要介紹了Tensorflow中TFRecord生成與讀取的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • parser.add_argument中的action使用

    parser.add_argument中的action使用

    這篇文章主要介紹了parser.add_argument中的action使用,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • Python枚舉類定義和使用方法

    Python枚舉類定義和使用方法

    這篇文章主要介紹了Python枚舉類定義和使用方法,文章圍繞主題的相關(guān)資料展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-05-05
  • Python入門之布爾值詳解

    Python入門之布爾值詳解

    Python中布爾值(Booleans)表示以下兩個值之一:True或False。本文主要介紹布爾值(Booleans)的使用,和使用時需要注意的地方,需要的可以參考一下
    2023-02-02
  • Python進(jìn)階:生成器 懶人版本的迭代器詳解

    Python進(jìn)階:生成器 懶人版本的迭代器詳解

    這篇文章主要介紹了Python進(jìn)階:生成器 懶人版本的迭代器詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-06-06

最新評論

陕西省| 闻喜县| 兴业县| 河曲县| 红安县| 林西县| 凤台县| 勃利县| 加查县| 西盟| 仲巴县| 云安县| 资中县| 凤冈县| 陇川县| 安岳县| 凌源市| 乡城县| 天水市| 贺兰县| 明溪县| 佛坪县| 绥芬河市| 吉首市| 辉南县| 台东县| 旬阳县| 邛崃市| 和硕县| 苗栗县| 东阳市| 平和县| 沙洋县| 松潘县| 连江县| 望奎县| 闽清县| 仙居县| 洛扎县| 虞城县| 洞头县|