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

Python使用BeautifulSoup4修改網(wǎng)頁內(nèi)容的實戰(zhàn)記錄

 更新時間:2022年05月20日 11:56:59   作者:XieJava's?blog  
BeautifulSoup除了可以查找和定位網(wǎng)頁內(nèi)容,還可以修改網(wǎng)頁,下面這篇文章主要給大家介紹了關于Python使用BeautifulSoup4修改網(wǎng)頁內(nèi)容的相關資料,需要的朋友可以參考下

最近有個小項目,需要爬取頁面上相應的資源數(shù)據(jù)后,保存到本地,然后將原始的HTML源文件保存下來,對HTML頁面的內(nèi)容進行修改將某些標簽整個給替換掉。

對于這類需要對HTML進行操作的需求,最方便的莫過于 BeautifulSoup4 的庫了。

樣例的HTML代碼如下:

<html>
<body>
    <a class="videoslide"  rel="external nofollow"  rel="external nofollow" >
       <img src="http://www.test.com/wp-content/uploads/1020/1381824922_zy_compress.JPG" data-zy-media-id="zy_location_201310151613422786"/>
    </a>
    <a  rel="external nofollow"  rel="external nofollow" >
       <img data-zy-media-id="zy_image_201310151613169945" src="http://www.test.com/wp-content/uploads/1020/第一張_1381824798_zy_compress.JPG"/></a>
    <a  rel="external nofollow"  rel="external nofollow" >
       <img data-zy-media-id="zy_image_201310151613163009" src="http://www.test.com/wp-content/uploads/1020/第二張_1381824796_zy_compress.jpg"/>
    </a>
    <a  rel="external nofollow"  rel="external nofollow" >
       <img data-zy-media-id="zy_image_201312311838584446" src="http://www.test.com/wp-content/uploads/1020/第三張_zy_compress.jpg"/>
    </a>
</body>
</html>

這里主要包括了 <a > 標簽, <a > 標簽里面嵌入了 <img > 標簽,其中有 <a class="videoslide"> 的標識該標簽實際是可以播放動畫的。需要根據(jù) class="videoslide" 來判斷將整個 <a > 標簽換成播放器的 <video > 標簽,將沒有 class="videoslide" 的 <a > 標簽換成 <figure> 標簽。

也就是將帶有的 <a class="videoslide" ...><img ... /></a> 標簽換成

<div class="video">
<video controls width="100%" poster="視頻鏈接的圖片地址.jpg">
    <source src="視頻文件的靜態(tài)地址.mp4" type="video/mp4" />
    您的瀏覽器不支持H5視頻,請使用Chrome/Firefox/Edge瀏覽器。
</video>
</div>

將 <a ....><img .../></a> 標簽換成

<figure>
    < img src="圖片地址_compressed.jpg" data-zy-media-id="圖片地址.jpg">
    <figcaption>文字說明(如果有)</figcaption>
</figure>

這里通過BeautifulSoup4 的select()方法找到標簽,通過get()方法獲取標簽及標簽屬性值,通過replaceWith來替換標簽,具體代碼如下:

首先安裝BeautifulSoup4的庫,BeautifulSoup4庫依賴于lxml庫,所以也需要安裝lxml庫。

pip install bs4
pip install lxml

具體代碼實現(xiàn)如下:

import os
from bs4 import BeautifulSoup
htmlstr='<html><body>' \
        '<a class="videoslide"  rel="external nofollow"  rel="external nofollow" >' \
        '<img src="http://www.test.com/wp-content/uploads/1020/1381824922_zy_compress.JPG" data-zy-media-id="zy_location_201310151613422786"/></a>' \
        '<a  rel="external nofollow"  rel="external nofollow" >' \
        '<img data-zy-media-id="zy_image_201310151613169945" src="http://www.test.com/wp-content/uploads/1020/第一張_1381824798_zy_compress.JPG"/></a>' \
        '<a  rel="external nofollow"  rel="external nofollow" >' \
        '<img data-zy-media-id="zy_image_201310151613163009" src="http://www.test.com/wp-content/uploads/1020/第二張_1381824796_zy_compress.jpg"/></a>' \
        '<a  rel="external nofollow"  rel="external nofollow" >' \
        '<img data-zy-media-id="zy_image_201312311838584446" src="http://www.test.com/wp-content/uploads/1020/第三張_zy_compress.jpg"/></a>' \
        '</body></html>'

def procHtml(htmlstr):
    soup = BeautifulSoup(htmlstr, 'lxml')
    a_tags=soup.select('a')
    for a_tag in a_tags:
        a_tag_src = a_tag.get('href')
        a_tag_filename = os.path.basename(a_tag_src)
        a_tag_path = os.path.join('src', a_tag_filename)
        a_tag['href']=a_tag_path
        next_tag=a_tag.next
        #判斷是視頻還是圖片,如果a標簽帶了class="videoslide" 是視頻否則是圖片
        if a_tag.get('class') and 'videoslide'==a_tag.get('class')[0]:
            # 處理視頻文件
            media_id = next_tag.get('data-zy-media-id')
            if media_id:
                media_url = 'http://www.test.com/travel/show_media/' + str(media_id)+'.mp4'
                media_filename = os.path.basename(media_url)
                media_path = os.path.join('src', media_filename)
                # 將div.video標簽替換a標簽
                video_html = '<div class=\"video\"><video controls width = \"100%\" poster = \"' + a_tag_path + '\" ><source src = \"' + media_path + '\" type = \"video/mp4\" /> 您的瀏覽器不支持H5視頻,請使用Chrome / Firefox / Edge瀏覽器。 </video></div>'
                video_soup = BeautifulSoup(video_html, 'lxml')
                a_tag.replaceWith(video_soup.div)
        else:
            #獲取圖片信息
            if 'img'==next_tag.name:
                img_src=next_tag.get('src')
                # 判斷是否路徑是否為本地資源 data:image和file:
                if img_src.find('data:image') == -1 and img_src.find('file:') == -1:
                    img_filename = os.path.basename(img_src)
                    img_path = os.path.join('src', img_filename)
                    # 將<figure><img>標簽替換a標簽
                    figcaption=''
                    figure_html='<figure><img src=\"'+img_path+'\" data-zy-media-id=\"'+a_tag_path+'\"><figcaption>'+figcaption+'</figcaption></figure>'
                    figure_soup = BeautifulSoup(figure_html, 'lxml')
                    a_tag.replaceWith(figure_soup.figure)
    html_content = soup.contents[0]
    return html_content

if __name__ == '__main__':
    pro_html_str=procHtml(htmlstr)
    print(pro_html_str)

結果:

<html>
<body>
<div class="video">
<video controls="" poster="src\1381824922.JPG" width="100%">
<source src="src\zy_location_201310151613422786.mp4" type="video/mp4"/> 您的瀏覽器不支持H5視頻,請使用Chrome / Firefox / Edge瀏覽器。 
</video>
</div>
<figure>
<img data-zy-media-id="src\第一張_1381824798.JPG" src="src\第一張_1381824798_zy_compress.JPG"/>
<figcaption></figcaption>
</figure>
<figure>
<img data-zy-media-id="src\第二張_1381824796.jpg" src="src\第二張_1381824796_zy_compress.jpg"/>
<figcaption></figcaption></figure>
<figure>
<img data-zy-media-id="src\第三張.jpg" src="src\第三張_zy_compress.jpg"/>
<figcaption></figcaption>
</figure>
</body>
</html>

總結 

到此這篇關于Python使用BeautifulSoup4修改網(wǎng)頁內(nèi)容的文章就介紹到這了,更多相關Python BeautifulSoup4修改網(wǎng)頁內(nèi)容內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • OpenCV學習之圖像的疊加與混合詳解

    OpenCV學習之圖像的疊加與混合詳解

    這篇文章主要為大家詳細介紹了OpenCV圖像視覺學習中的圖像的疊加與混合,文中的示例代碼簡潔易懂,具有一定的借鑒價值,需要的可以參考一下
    2023-02-02
  • PyQt5打開文件對話框QFileDialog實例代碼

    PyQt5打開文件對話框QFileDialog實例代碼

    這篇文章主要介紹了PyQt5打開文件對話框QFileDialog實例代碼,分享了相關代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下
    2018-02-02
  • Python通過TensorFlow卷積神經(jīng)網(wǎng)絡實現(xiàn)貓狗識別

    Python通過TensorFlow卷積神經(jīng)網(wǎng)絡實現(xiàn)貓狗識別

    今天小編就為大家分享一篇關于Python通過TensorFlow卷積神經(jīng)網(wǎng)絡實現(xiàn)貓狗識別,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • Python的 元組(Tuple)詳解

    Python的 元組(Tuple)詳解

    Python的元組與列表類似,不同之處在于元組的元素不能修改,元組使用小括號,列表使用方括號,元組創(chuàng)建很簡單,只需要在括號中添加元素,并使用逗號隔開即可
    2021-10-10
  • python按時間排序目錄下的文件實現(xiàn)方法

    python按時間排序目錄下的文件實現(xiàn)方法

    今天小編就為大家分享一篇python按時間排序目錄下的文件實現(xiàn)方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • 使用Python合并PDF文件并添加自定義目錄及頁腳的全過程

    使用Python合并PDF文件并添加自定義目錄及頁腳的全過程

    在處理文檔時,我們經(jīng)常遇到需要合并多個PDF文件并添加目錄及頁腳的情況,本文將介紹如何使用Python,特別是PyPDF2和reportlab庫來實現(xiàn)這一功能我們將通過一個實用的示例來演示整個過程,需要的朋友可以參考下
    2024-03-03
  • 對python中的控制條件、循環(huán)和跳出詳解

    對python中的控制條件、循環(huán)和跳出詳解

    今天小編就為大家分享一篇對python中的控制條件、循環(huán)和跳出詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-06-06
  • Python中條件選擇和循環(huán)語句使用方法介紹

    Python中條件選擇和循環(huán)語句使用方法介紹

    Python中也存在條件選擇和循環(huán)語句,其風格和C語言、java的很類似,不過在書寫語法上還是存在一些區(qū)別的,接下來同大家一起了解下,希望可以幫助你更好的學習python,感興趣的你可不要錯過了哈
    2013-03-03
  • Python利用帶權重隨機數(shù)解決抽獎和游戲爆裝備問題

    Python利用帶權重隨機數(shù)解決抽獎和游戲爆裝備問題

    帶權重隨機數(shù)即是隨機數(shù)各個區(qū)間段被抽中的概率根據(jù)權重而不同,這里我們就來看一下Python利用帶權重隨機數(shù)解決抽獎和游戲爆裝備問題的方法,首先還是來進一步解釋帶權隨機數(shù):
    2016-06-06
  • python給list排序的簡單方法

    python給list排序的簡單方法

    在本篇文章里小編給大家整理的是一篇關于python給list排序的簡單方法,有需要的朋友們可以學習參考下。
    2020-12-12

最新評論

巧家县| 葫芦岛市| 民和| 谷城县| 宁远县| 叙永县| 桃江县| 华坪县| 密山市| 临沭县| 黄陵县| 长春市| 盐亭县| 西畴县| 石台县| 安仁县| 鹤庆县| 滦南县| 都匀市| 酒泉市| 北安市| 孝昌县| 龙川县| 乌拉特前旗| 黄大仙区| 光山县| 丹巴县| 孝昌县| 凤冈县| 乌什县| 乌拉特中旗| 伊吾县| 鸡东县| 黑河市| 财经| 平遥县| 沙河市| 喀喇| 新营市| 宁明县| 仙游县|