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

如何用Python Beautiful?Soup解析HTML內(nèi)容

 更新時間:2023年05月15日 11:03:28   作者:naer_chongya  
Beautiful Soup是一種Python的解析庫,主要用于解析和處理HTML/XML內(nèi)容,詳細(xì)介紹Beautiful Soup的使用方式和應(yīng)用場景,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下

Beautiful Soup是一種Python的解析庫,主要用于解析和處理HTML/XML內(nèi)容。它是基于Python的標(biāo)準(zhǔn)庫和第三方庫的結(jié)合,能夠提供簡便的方式實現(xiàn)文本的查找、修改和提取操作。

HTML指的是超文本標(biāo)記語言(Hypertext Markup Language),即一種用于描述網(wǎng)頁內(nèi)容的標(biāo)記語言。在我們訪問一個網(wǎng)頁的時候,瀏覽器便會將HTML內(nèi)容下載到本地并以可視化的形式展示給我們。但是,在程序員的世界里我們需要能夠?qū)TML內(nèi)容進(jìn)行更多的操作,而Beautiful Soup就是這種工具之一。

Beautiful Soup能夠解析HTML內(nèi)容并轉(zhuǎn)化成一個復(fù)雜的樹結(jié)構(gòu),然后可以通過標(biāo)簽名、屬性名等多種方式進(jìn)行內(nèi)容的查找和修改。使用Beautiful Soup不僅能夠讓我們更高效地處理HTML內(nèi)容,而且還能避免很多手動操作引起的誤差。

下面我們來詳細(xì)介紹Beautiful Soup的使用方式和應(yīng)用場景。

Beautiful Soup的使用

Beautiful Soup提供的解析器有bs3、bs4,其中bs3逐漸被棄用,目前bs4為最新版。我們主要介紹bs4的使用。

首先,我們需要安裝Beautiful Soup庫。在終端輸入以下命令:

pip install beautifulsoup4

安裝成功后,我們通過import語句將Beautiful Soup庫引入程序中。

from bs4 import BeautifulSoup

接下來假設(shè)我們有一個HTML文本:

<html>
  <head>
    <title>Beautiful Soup Tutorial</title>
  </head>
  <body>
    <div class="article">
      <h1>Python BeautifulSoup Tutorial</h1>
      <p class="intro">這是一篇Beautiful Soup入門教程</p>
      <p class="content">它將介紹Beautiful Soup的基本用法以及一些高級的應(yīng)用場景</p>
      <a class="link" >點擊訪問示例網(wǎng)站</a>
    </div>
  </body>
</html>

我們可以通過以下語句將HTML文本解析成BeautifulSoup對象:

soup = BeautifulSoup(html_doc, 'html.parser')

其中,html_doc為上述HTML文本,'html.parser’為指定的解析器。

標(biāo)簽選擇器

Beautiful Soup提供了多種標(biāo)簽選擇器,能夠便捷地從HTML文本中選擇需要的內(nèi)容。

選擇標(biāo)簽名為h1的元素:

soup.select('h1')

結(jié)果為:

[<h1>Python BeautifulSoup Tutorial</h1>]

選擇標(biāo)簽名為p且class屬性為“intro”的元素:

soup.select('p.intro')

結(jié)果為:

[<p class="intro">這是一篇Beautiful Soup入門教程</p>]

選擇標(biāo)簽名為a且class屬性為“link”的元素,其href屬性的值為"http://www.example.com":

soup.select('a.link[)

結(jié)果為:

[<a class="link" href="http://www.example.com">點擊訪問示例網(wǎng)站</a>]

標(biāo)簽樹操作

我們可以通過Beautiful Soup的樹型結(jié)構(gòu),對HTML文本進(jìn)行各種查找與修改操作。

嵌套選擇標(biāo)簽

可以通過嵌套選擇標(biāo)簽,定位到HTML文本中需要的標(biāo)簽,例如選擇“div”標(biāo)簽下的所有“p”標(biāo)簽。

content = soup.select('div.article > p')

可以看到,選擇結(jié)果為兩個“p”標(biāo)簽。

[<p class="intro">這是一篇Beautiful Soup入門教程</p>, 
 <p class="content">它將介紹Beautiful Soup的基本用法以及一些高級的應(yīng)用場景</p>]

.string/.text屬性獲取標(biāo)簽內(nèi)容

可以通過.string屬性或.text屬性獲取標(biāo)簽內(nèi)的文本內(nèi)容。

例如,獲取標(biāo)題“h1”標(biāo)簽內(nèi)的文本內(nèi)容:

title = soup.select('h1')[0].string
print(title)

輸出結(jié)果為:

Python BeautifulSoup Tutorial

可以看到,.string相比于.text屬性更加精確,可以避免獲取到標(biāo)簽內(nèi)的其他內(nèi)容干擾。

.get()方法獲取標(biāo)簽屬性值

可以通過.get()方法獲取標(biāo)簽內(nèi)的屬性值。例如,獲取“a”標(biāo)簽的href屬性值:

link = soup.select('a.link')[0].get('href')
print(link)

輸出結(jié)果為:

http://www.example.com

修改HTML文本

除了查找與獲取HTML文本的內(nèi)容,我們還可以使用Beautiful Soup對HTML文本進(jìn)行修改操作。

修改標(biāo)簽屬性值

通過tag對象的.attrs屬性可以獲取標(biāo)簽的屬性,使用該屬性進(jìn)行修改操作。

例如,將“a”標(biāo)簽的href屬性值修改為“http://www.newexample.com”:

link_tag = soup.select('a.link')[0]
link_tag['href'] = 'http://www.newexample.com'
print(link_tag)

可以看到,輸出結(jié)果中href屬性值已經(jīng)被修改。

<a class = "link" >點擊訪問示例網(wǎng)站</a>

修改標(biāo)簽文本內(nèi)容

通過tag對象的.string屬性或replace_with()方法可以修改標(biāo)簽的文本內(nèi)容。

例如,將第一個“p”標(biāo)簽的文本修改為“歡迎來到Beautiful Soup教程”:

p_tag = soup.select('p.intro')[0]
p_tag.string = '歡迎來到Beautiful Soup教程'
print(p_tag)

輸出結(jié)果為:

<p class = "intro">歡迎來到Beautiful Soup教程</p>

增加標(biāo)簽和刪除標(biāo)簽

我們可以使用Beautiful Soup提供的函數(shù),例如new_tag()、new_string()、append()和insert()等方法,創(chuàng)建新標(biāo)簽或文本,并插入HTML文本當(dāng)中。

例如,我們通過append()方法在“body”標(biāo)簽的末尾增加一個“div”標(biāo)簽:

new_div = soup.new_tag('div')
new_div.string = '這是Beautiful Soup教程的結(jié)尾'
soup.select('body')[0].append(new_div)
print(soup)

可以看到,輸出結(jié)果中的HTML文本結(jié)尾增加了一個新的“div”標(biāo)簽。

應(yīng)用場景

美食網(wǎng)站信息爬取

我們將以美食網(wǎng)站中的“熱門排行榜”為例進(jìn)行演示。

首先,我們需要通過requests庫獲取HTML文本。以“熱門排行榜”頁面為例:

import requests
from bs4 import BeautifulSoup
url = 'https://www.meishij.net/chufang/diy/diy_rmphb/'
html = requests.get(url)
soup = BeautifulSoup(html.text, 'html.parser')

我們可以通過觀察HTML文本,發(fā)現(xiàn)熱門排行榜的信息在“div”標(biāo)簽中,具體位置在“div.zg_wrap”標(biāo)簽中,而餐品名稱在“div.zg_wrap > li > div > p > a”標(biāo)簽中。因此,我們可以使用以下語句提取美食名稱:

for i, li in enumerate(soup.select('div.zg_wrap > li')):
    name = li.select('div > p > a')[0].get('title')
    print(f'{i+1}. {name}')

可以看到,我們已成功提取出了美食名稱,輸出結(jié)果如下:

1. 漢堡
2. 糯米飯
3. 明爐烤鴨
4. 龍蝦
5. 火鍋
6. 美式薯條
7. 叉燒肉
8. 紅燒肉
9. 快手美食
10. 韓國泡菜

至此,我們已經(jīng)成功通過Beautiful Soup解析庫,提取出了美食網(wǎng)站的熱門排行榜信息,演示了Beautiful Soup在爬蟲數(shù)據(jù)抓取和處理中的重要應(yīng)用。

總結(jié)

Beautiful Soup作為一種解析庫,能夠方便地解析HTML/XML文本,提供多種標(biāo)簽選擇器并支持樹型結(jié)構(gòu)操作,可以快速定位和處理HTML/XML中需要的內(nèi)容,提高了爬蟲數(shù)據(jù)抓取和處理的效率。對于Python爬蟲初學(xué)者來說,掌握Beautiful Soup的使用是十分重要的。同時需要注意的是,在使用Beautiful Soup時需要遵循網(wǎng)絡(luò)道德規(guī)范,遵守網(wǎng)站的規(guī)定,避免對網(wǎng)站造成過度訪問和其他影響。

到此這篇關(guān)于如何用Beautiful Soup解析HTML內(nèi)容的文章就介紹到這了,更多相關(guān)Beautiful Soup解析HTML內(nèi)容內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python?面向切面編程?AOP?及裝飾器

    Python?面向切面編程?AOP?及裝飾器

    這篇文章主要介紹了Python?面向切面編程?AOP?及裝飾器,AOP,就是面向切面編程,簡單的說,就是動態(tài)地將代碼切入到類的指定方法、指定位置上的編程思想就是面向切面的編程,更多相關(guān)資需要的小伙伴可以參考下面文章內(nèi)容
    2022-05-05
  • django數(shù)據(jù)庫自動重連的方法實例

    django數(shù)據(jù)庫自動重連的方法實例

    這篇文章主要給大家介紹了關(guān)于django數(shù)據(jù)庫自動重連的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用django具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • Pycharm漢化兩種方法(pycharm改為中文版)

    Pycharm漢化兩種方法(pycharm改為中文版)

    PyCharm是一款流行的Python開發(fā)環(huán)境,提供了豐富的功能和工具,使得Python的開發(fā)和調(diào)試變得更加方便和高效,下面這篇文章主要給大家介紹了Pycharm漢化的兩種方法,所謂漢化就是將pycharm改為中文版,需要的朋友可以參考下
    2023-06-06
  • pytorch GPU和CPU模型相互加載方式

    pytorch GPU和CPU模型相互加載方式

    在PyTorch中,保存和加載模型有兩種主要方式:直接保存整個模型結(jié)構(gòu)加權(quán)重,或者只保存模型的參數(shù),直接保存整個模型的方法簡單,但不夠靈活,且可能存在模型結(jié)構(gòu)不一致的風(fēng)險,推薦的做法是只保存模型參數(shù),這種方法需要在加載前定義與原模型結(jié)構(gòu)相同的模型
    2024-09-09
  • 解決yum對python依賴版本問題

    解決yum對python依賴版本問題

    這篇文章主要介紹了解決yum對python依賴版本問題,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-07-07
  • Django admin實現(xiàn)圖書管理系統(tǒng)菜鳥級教程完整實例

    Django admin實現(xiàn)圖書管理系統(tǒng)菜鳥級教程完整實例

    這篇文章主要介紹了Django admin實現(xiàn)圖書管理系統(tǒng)菜鳥級教程完整實例,具有一定借鑒價值,需要的朋友可以參考下。
    2017-12-12
  • Python搭建APNS蘋果推送通知推送服務(wù)的相關(guān)模塊使用指南

    Python搭建APNS蘋果推送通知推送服務(wù)的相關(guān)模塊使用指南

    這里總結(jié)了一份Python搭建蘋果推送通知推送服務(wù)的相關(guān)模塊使用指南,包括PyAPNs、基于twisted框架的pyapns以及apns-client三個模塊的介紹,需要的朋友可以參考下
    2016-06-06
  • python利用hook技術(shù)破解https的實例代碼

    python利用hook技術(shù)破解https的實例代碼

    python利用hook技術(shù)破解https的實例代碼,需要的朋友可以參考一下
    2013-03-03
  • Python 2.6.6升級到Python2.7.15的詳細(xì)步驟

    Python 2.6.6升級到Python2.7.15的詳細(xì)步驟

    這篇文章主要介紹了Python 2.6.6升級到Python2.7.15的詳細(xì)步驟,本文分步驟給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12
  • 關(guān)于python變量的引用以及在底層存儲原理

    關(guān)于python變量的引用以及在底層存儲原理

    Python的變量,簡單來說有數(shù)值型,布爾型,字符串類型,列表,元組,字典等6大類。那么不同變量類型在底層是如何存儲的,關(guān)系到變量的引用,能否正確的掌握變量的相關(guān)操作?接下來小編就來為大家講解python變量的引用以及在底層存儲原理,需要的朋友可以參考一下
    2021-09-09

最新評論

宜兰县| 石狮市| 涞源县| 宁乡县| 黎平县| 雅安市| 友谊县| 兴仁县| 新巴尔虎右旗| 天峻县| 阳新县| 古蔺县| 云霄县| 林周县| 嘉荫县| 山东省| 永川市| 佛山市| 昌黎县| 吴江市| 清远市| 渭源县| 哈尔滨市| 松溪县| 安陆市| 芒康县| 洪江市| 灵宝市| 新竹县| 漳平市| 阿荣旗| 江永县| 报价| 深水埗区| 鹤壁市| 多伦县| 昭平县| 镇康县| 泽州县| 高邮市| 金川县|