Python使用BeautifulSoup4修改网页内容的实战记录_第1页
Python使用BeautifulSoup4修改网页内容的实战记录_第2页
Python使用BeautifulSoup4修改网页内容的实战记录_第3页
Python使用BeautifulSoup4修改网页内容的实战记录_第4页
Python使用BeautifulSoup4修改网页内容的实战记录_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论