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

Python實(shí)現(xiàn)解析Html的方法與對(duì)比

 更新時(shí)間:2024年03月22日 15:51:42   作者:microhex  
在最近需要的需求中,需要?python?獲取網(wǎng)頁(yè)內(nèi)容,并從html中獲取到想要的內(nèi)容,本文主要介紹了兩種常用方法并進(jìn)行了對(duì)比,感興趣的可以了解下

在最近需要的需求中,需要 python 獲取網(wǎng)頁(yè)內(nèi)容,并從html中獲取到想要的內(nèi)容。這里記錄一下兩個(gè)比較常用的python庫(kù)對(duì)html的解析。

1. BeautifulSoup

它是一個(gè)非常流行的python腳本庫(kù),用于解析HTML和XML文檔。如果你對(duì) java 很熟悉,那么就會(huì)容易想到j(luò)ava中也存在一個(gè)類似的java庫(kù),叫Jsoup,名稱相似,效果也差不多。BeautifulSoup提供了簡(jiǎn)單易用的API,可以通過(guò)標(biāo)簽名、屬性、CSS選擇器等各種方式查找和提取HTML元素.

安裝

pip install beautifulsoup4

實(shí)例代碼:

from bs4 import BeautifulSoup
import requests

# 發(fā)送請(qǐng)求獲取到 html 內(nèi)容
response = requests.get("https://www.example.com")
html_content = response.text 

# 創(chuàng)建 BeautifulSoup 對(duì)象
soup = BeautifulSoup(html,'html.parser')

# 創(chuàng)建 CSS 選擇器查找元素
elements = soup.select(".class-name")
for element in elements:
  print(element.text)

比如我現(xiàn)在想獲取新浪新聞的列表:

對(duì) html 進(jìn)行分析,我們可以發(fā)現(xiàn) class name:

那么我們可以直接填入代碼:

def try_to_get_world_news() :
    response = requests.get("https://news.sina.com.cn/world/")
    response.encoding = "utf-8"
    html_data = response.text
    # 創(chuàng)建 BeautifulSoup 對(duì)象
    soup = BeautifulSoup(html_data, "html.parser")
    # 通過(guò)css選擇器cha查找元素
    elements =  soup.select(".news-item")
    for element in elements:
        if element is not None:
           a_links = element.find_all('a')
           if a_links is not None and len(a_links) > 0 :
              a_link = a_links[0]
              a_text = a_link.text.strip()
              a_href = a_link.get('href')
              print("文本:" + a_text + ",鏈接:" + a_href)

2. lxml

另外一個(gè)強(qiáng)大的python庫(kù),也是用來(lái)處理 HTML 和 XML 文檔。當(dāng)然,它提供了XPath和CSS選擇器等功能,也可以很方面的定位和提取HTML庫(kù)。

安裝

pip install lxml

?當(dāng)然你還可能需要安裝一下 cssselect 這個(gè)庫(kù)

pip install cssselect

代碼實(shí)例

from lxml import html
import requests
import cssselect

# 創(chuàng)建請(qǐng)求對(duì)象,獲取請(qǐng)求內(nèi)容
response = requests.get("https://www.example.com")
html_content = response.text

# 創(chuàng)建 lxml 的 HTML 對(duì)象
tree = html.fromstring(html_content)

# 通過(guò) css 選擇器查找
elements = tree.cssselect(".class-name")
for element in elements:
  print(element.text)

demo:

同樣也是上面的例子,直接貼代碼:

    response = requests.get("https://news.sina.com.cn/world/")
    response.encoding = "utf-8"
    html_data = response.text
    tree = html.fromstring(html_data)
    elements =  tree.cssselect(".news-item")
    for element in elements:
        print(element)

直接看結(jié)果

3. BeautifulSoup 和 lxml 優(yōu)缺點(diǎn)

BeautifulSoup和lxml都是Python中廣泛使用的HTML和XML解析庫(kù),它們各自有其優(yōu)勢(shì)和特點(diǎn)。以下是BeautifulSoup和lxml的主要區(qū)別和優(yōu)勢(shì):

BeautifulSoup的優(yōu)勢(shì):

  • 簡(jiǎn)單易用:BeautifulSoup提供了一個(gè)簡(jiǎn)單而直觀的API,使得解析HTML和XML文檔變得非常容易。它的語(yǔ)法簡(jiǎn)潔明了,即使是初學(xué)者也可以快速上手。
  • 強(qiáng)大的解析能力:BeautifulSoup可以處理不規(guī)范的HTML和XML文檔,即使文檔中存在錯(cuò)誤或不完整的標(biāo)簽,它仍然能夠正確解析。
  • 支持多種解析器:BeautifulSoup支持多種底層解析器,如lxml、html.parser和html5lib等。你可以根據(jù)需要選擇合適的解析器來(lái)提高解析性能或處理特定的文檔。
  • 靈活的導(dǎo)航和搜索:BeautifulSoup提供了多種方法來(lái)導(dǎo)航和搜索文檔樹(shù),如通過(guò)標(biāo)簽名、屬性、CSS選擇器等。它還支持使用正則表達(dá)式進(jìn)行搜索和匹配。
  • 對(duì)Python開(kāi)發(fā)者友好:BeautifulSoup是一個(gè)純Python庫(kù),它與Python的數(shù)據(jù)結(jié)構(gòu)和編程風(fēng)格緊密集成。對(duì)于Python開(kāi)發(fā)者來(lái)說(shuō),使用BeautifulSoup更加自然和便捷。

lxml的優(yōu)勢(shì):

  • 高性能:lxml是一個(gè)高性能的HTML和XML解析庫(kù),它使用C語(yǔ)言編寫(xiě)的libxml2和libxslt庫(kù)作為底層引擎,因此解析速度非常快。
  • 支持XPath:lxml內(nèi)置了對(duì)XPath的支持,XPath是一種強(qiáng)大的語(yǔ)言,用于在XML和HTML文檔中進(jìn)行導(dǎo)航和查詢。使用XPath可以方便地定位和提取所需的元素。
  • 支持CSS選擇器:lxml同樣支持使用CSS選擇器來(lái)查找和提取元素,這對(duì)于Web開(kāi)發(fā)者來(lái)說(shuō)非常熟悉和便捷。
  • 支持XML和HTML的轉(zhuǎn)換:lxml可以將HTML文檔轉(zhuǎn)換為well-formed的XML文檔,也可以將XML文檔轉(zhuǎn)換為HTML文檔,這在某些情況下非常有用。
  • 與其他庫(kù)的集成:lxml可以與其他Python庫(kù)很好地集成,如pandas、NumPy等,可以方便地進(jìn)行數(shù)據(jù)處理和分析。

區(qū)別:

解析速度:lxml的解析速度通常比BeautifulSoup更快,特別是在處理大型文檔時(shí)。如果性能是主要考慮因素,lxml可能是更好的選擇;

易用性:BeautifulSoup的API更加簡(jiǎn)單和直觀,對(duì)于初學(xué)者來(lái)說(shuō)更容易上手。而lxml的API相對(duì)更加底層和復(fù)雜,需要一定的學(xué)習(xí)成本。

文檔支持:BeautifulSoup對(duì)于處理不規(guī)范的HTML文檔更加寬容,而lxml更傾向于處理well-formed的XML文檔。

依賴項(xiàng):BeautifulSoup是一個(gè)純Python庫(kù),沒(méi)有外部依賴。而lxml依賴于C語(yǔ)言編寫(xiě)的libxml2和libxslt庫(kù),需要單獨(dú)安裝。

當(dāng)然,我們的選擇就是看自己的需求和偏好了。如果你是性能要求高,追求XPath和其它庫(kù)的繼承,lxml將會(huì)是一個(gè)比較好的選擇;當(dāng)然,就像我,比較重視簡(jiǎn)單易用,而且面對(duì)的HTML并不是特別的規(guī)范,我就會(huì)選擇 BeautifulSoup。

以上就是Python實(shí)現(xiàn)解析Html的方法與對(duì)比的詳細(xì)內(nèi)容,更多關(guān)于Python解析Html的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python測(cè)試框架pytest核心庫(kù)pluggy詳解

    Python測(cè)試框架pytest核心庫(kù)pluggy詳解

    這篇文章主要為大家介紹了Python測(cè)試框架pytest核心庫(kù)pluggy使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • Pytorch建模過(guò)程中的DataLoader與Dataset示例詳解

    Pytorch建模過(guò)程中的DataLoader與Dataset示例詳解

    這篇文章主要介紹了Pytorch建模過(guò)程中的DataLoader與Dataset,同時(shí)PyTorch針對(duì)不同的專業(yè)領(lǐng)域,也提供有不同的模塊,例如?TorchText,?TorchVision,?TorchAudio,這些模塊中也都包含一些真實(shí)數(shù)據(jù)集示例,本文給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2023-01-01
  • Python輕量級(jí)定時(shí)任務(wù)調(diào)度APScheduler的使用

    Python輕量級(jí)定時(shí)任務(wù)調(diào)度APScheduler的使用

    Apscheduler是一個(gè)基于Quartz的python定時(shí)任務(wù)框架,本文主要介紹了Python輕量級(jí)定時(shí)任務(wù)調(diào)度APScheduler的使用,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-02-02
  • Tornado路由與Application的實(shí)現(xiàn)

    Tornado路由與Application的實(shí)現(xiàn)

    本文主要介紹了Tornado路由與Application的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • Linux上使用Python統(tǒng)計(jì)每天的鍵盤(pán)輸入次數(shù)

    Linux上使用Python統(tǒng)計(jì)每天的鍵盤(pán)輸入次數(shù)

    這篇文章主要介紹了Linux上使用Python統(tǒng)計(jì)每天的鍵盤(pán)輸入次數(shù),非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-04-04
  • Pyhton模塊和包相關(guān)知識(shí)總結(jié)

    Pyhton模塊和包相關(guān)知識(shí)總結(jié)

    文中詳細(xì)整理了關(guān)于Python模塊和包的相關(guān)知識(shí)點(diǎn),剛?cè)腴TPython的小伙伴們可以學(xué)習(xí)一下,有助于加深Python基礎(chǔ)的理解.而且有詳細(xì)說(shuō)明及代碼示例,需要的朋友可以參考下
    2021-05-05
  • python?selenium實(shí)現(xiàn)登錄豆瓣示例詳解

    python?selenium實(shí)現(xiàn)登錄豆瓣示例詳解

    大家好,本篇文章主要講的是python?selenium登錄豆瓣示例詳解,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下
    2022-01-01
  • Python利用pdfplumber庫(kù)提取pdf中的文字

    Python利用pdfplumber庫(kù)提取pdf中的文字

    pdfplumber是一個(gè)用于從PDF文檔中提取文本和表格數(shù)據(jù)的Python庫(kù),它可以幫助用戶輕松地從PDF文件中提取有用的信息,例如表格、文本、元數(shù)據(jù)等,本文將給大家介紹如何通過(guò)Python的pdfplumber庫(kù)提取pdf中的文字,需要的朋友可以參考下
    2023-05-05
  • Pytorch torch.repeat_interleave()用法示例詳解

    Pytorch torch.repeat_interleave()用法示例詳解

    torch.repeat_interleave() 是 PyTorch 中的一個(gè)函數(shù),用于按指定的方式重復(fù)張量中的元素,這篇文章主要介紹了Pytorch torch.repeat_interleave()用法示例詳解,需要的朋友可以參考下
    2024-01-01
  • python用win32gui遍歷窗口并設(shè)置窗口位置的方法

    python用win32gui遍歷窗口并設(shè)置窗口位置的方法

    今天小編就為大家分享一篇python用win32gui遍歷窗口并設(shè)置窗口位置的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-07-07

最新評(píng)論