栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python使用BeautifulSoup4修改网页内容实战

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

最近有个小项目,需要爬取页面上相应的资源数据后,保存到本地,然后将原始的HTML源文件保存下来,对HTML页面的内容进行修改将某些标签整个给替换掉。

对于这类需要对HTML进行操作的需求,最方便的莫过于BeautifulSoup4的库了。

样例的HTML代码如下:



    
       
Python使用BeautifulSoup4修改网页内容实战

Python使用BeautifulSoup4修改网页内容实战

Python使用BeautifulSoup4修改网页内容实战

Python使用BeautifulSoup4修改网页内容实战

这里主要包括了标签,标签里面嵌入了标签,其中有的标识该标签实际是可以播放动画的。需要根据 来判断将整个标签换成播放器的

标签。

也就是将带有的标签换成

将标签换成

< img src="图片地址_compressed.jpg" data-zy-media-id="图片地址.jpg">
文字说明(如果有)

这里通过BeautifulSoup4 的select()方法找到标签,通过get()方法获取标签及标签属性值,通过replaceWith来替换标签,具体代码如下:
首先安装BeautifulSoup4的库,BeautifulSoup4库依赖于lxml库,所以也需要安装lxml库。

pip install bs4
pip install lxml

具体代码实现如下:

import os
from bs4 import BeautifulSoup
htmlstr='' 
        '' 
        '' 
        '' 
        '' 
        '' 
        '' 
        '' 
        '' 
        ''

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标签带了 是视频否则是图片
        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 = ''
                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)
                    # 将
标签替换a标签 figcaption='' figure_html='
+img_path+'" data-zy-media-id="'+a_tag_path+'">
'+figcaption+'
' 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)

结果:




Python使用BeautifulSoup4修改网页内容实战

Python使用BeautifulSoup4修改网页内容实战

Python使用BeautifulSoup4修改网页内容实战

博客地址:http://xiejava.ishareread.com/

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/957824.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号