




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第Python使用BeautifulSoup4修改网页内容的实战记录最近有个小项目,需要爬取页面上相应的资源数据后,保存到本地,然后将原始的HTML源文件保存下来,对HTML页面的内容进行修改将某些标签整个给替换掉。
对于这类需要对HTML进行操作的需求,最方便的莫过于BeautifulSoup4的库了。
样例的HTML代码如下:
html
body
ahref="/wp-content/uploads/1020/1381824922.JPG"rel="externalnofollow"rel="externalnofollow"
imgsrc="/wp-content/uploads/1020/1381824922_zy_compress.JPG"data-zy-media-id="zy_location_201310151613422786"/
ahref="/wp-content/uploads/1020/第一张_1381824798.JPG"rel="externalnofollow"rel="externalnofollow"
imgdata-zy-media-id="zy_image_201310151613169945"src="/wp-content/uploads/1020/第一张_1381824798_zy_compress.JPG"//a
ahref="/wp-content/uploads/1020/第二张_1381824796.jpg"rel="externalnofollow"rel="externalnofollow"
imgdata-zy-media-id="zy_image_201310151613163009"src="/wp-content/uploads/1020/第二张_1381824796_zy_compress.jpg"/
ahref="/wp-content/uploads/1020/第三张.jpg"rel="externalnofollow"rel="externalnofollow"
imgdata-zy-media-id="zy_image_201312311838584446"src="/wp-content/uploads/1020/第三张_zy_compress.jpg"/
/body
/html
这里主要包括了a标签,a标签里面嵌入了img标签,其中有a>
也就是将带有的a>
div
videocontrolswidth="100%"poster="视频链接的图片地址.jpg"
sourcesrc="视频文件的静态地址.mp4"type="video/mp4"/
您的浏览器不支持H5视频,请使用Chrome/Firefox/Edge浏览器。
/video
/div
将a....img...//a标签换成
figure
imgsrc="图片地址_compressed.jpg"data-zy-media-id="图片地址.jpg"
figcaption文字说明(如果有)/figcaption
/figure
这里通过BeautifulSoup4的select()方法找到标签,通过get()方法获取标签及标签属性值,通过replaceWith来替换标签,具体代码如下:
首先安装BeautifulSoup4的库,BeautifulSoup4库依赖于lxml库,所以也需要安装lxml库。
pipinstallbs4
pipinstalllxml
具体代码实现如下:
importos
frombs4importBeautifulSoup
htmlstr='htmlbody'\
'ahref="/wp-content/uploads/1020/1381824922.JPG"rel="externalnofollow"rel="externalnofollow"'\
'imgsrc="/wp-content/uploads/1020/1381824922_zy_compress.JPG"data-zy-media-id="zy_location_201310151613422786"//a'\
'ahref="/wp-content/uploads/1020/第一张_1381824798.JPG"rel="externalnofollow"rel="externalnofollow"'\
'imgdata-zy-media-id="zy_image_201310151613169945"src="/wp-content/uploads/1020/第一张_1381824798_zy_compress.JPG"//a'\
'ahref="/wp-content/uploads/1020/第二张_1381824796.jpg"rel="externalnofollow"rel="externalnofollow"'\
'imgdata-zy-media-id="zy_image_201310151613163009"src="/wp-content/uploads/1020/第二张_1381824796_zy_compress.jpg"//a'\
'ahref="/wp-content/uploads/1020/第三张.jpg"rel="externalnofollow"rel="externalnofollow"'\
'imgdata-zy-media-id="zy_image_201312311838584446"src="/wp-content/uploads/1020/第三张_zy_compress.jpg"//a'\
'/body/html'
defprocHtml(htmlstr):
soup=BeautifulSoup(htmlstr,'lxml')
a_tags=soup.select('a')
fora_tagina_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标签带了是视频否则是图片
ifa_tag.get('class')and'videoslide'==a_tag.get('class')[0]:
#处理视频文件
media_id=next_tag.get('data-zy-media-id')
ifmedia_id:
media_url='/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"video\"videocontrolswidth=\"100%\"poster=\"'+a_tag_path+'\"sourcesrc=\"'+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_:
img_src=next_tag.get('src')
#判断是否路径是否为本地资源data:image和file:
ifimg_src.find('data:image')==-1andimg_src.find('file:')==-1:
img_filename=os.path.basename(img_src)
img_path=os.path.join('src',img_filename)
#将figureimg标签替换a标签
figcaption=''
figure_html='figureimgsrc=\"'+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]
returnhtml_content
if__name__=='__main__':
pro_html_str=procHtml(htmlstr)
print(pro_html_str)
结果:
html
body
div
videocontrols=""poster="src\1381824922.JPG"width="100%"
sourcesrc="src\zy_location_201310151613422786.mp4"type="video/mp4"/您的浏览器不支持H5视频,请使用Chrome/Firefox/Edge浏览器。
/video
/div
figure
imgdata-zy-media-id="src\第一张_1381824798.JPG"src="src\第一张_1381824798_zy_compress.JPG"/
figcaption/figcaption
/figure
figure
imgdata-zy-media-id="
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025商品房的房屋租赁合同范本
- 2025流动资金贷款技术改进合同范本
- 2025工程师聘用合同
- 2025房屋租赁合同纠纷起诉书样本
- 2025餐饮业劳动合同范文
- 2025汽车租赁与代驾服务合同示范文本
- 助理广告师考试的心理准备与调节试题及答案
- 幼儿园学科试题及答案
- 纺织品检验员考试实战经验试题及答案
- 专职社工面试真题及答案
- (精选word)3v3篮球比赛记录表
- 不间断电源装置(UPS)试验及运行质量检查表
- 学术型硕士学位(毕业)论文评阅意见书
- 心脏超声切面示意
- 2022年1月浙江高考英语应用文与读后续写范文汇总(素材)
- DB37∕T 4281-2020 场(厂)内专用机动车辆使用安全风险分级管控和事故隐患排查治理体系建设实施指南
- 七年级期中考试后家长会课件39820
- 保洁服务详细方案(完整版)
- 孔明灯(Lantern)3.4使用指南课件
- 苏教版五年级科学公开课斜坡的启示优秀教学设计和反思
- 房地产估价报告评审标准和打分表(本次评审使用)
评论
0/150
提交评论