如何使用Python中的BeautifulSoup保存对HTML文件所做的更改?

发布于 2021-01-29 15:07:04

我有下面的脚本,该脚本可以修改hrefHTML文件中的属性(将来,它将是目录中HTML文件的列表)。使用BeautifulSoup,我设法访问了标签值并根据需要对其进行了修改,但是我不知道如何保存对文件所做的更改。

import os
import re
from bs4 import BeautifulSoup


htmlDoc = open('adding_computer_c.html',"r+")
soup = BeautifulSoup(htmlDoc)

replacements= [ ('_', '-'), ('../tasks/', prefixUrl), ('../concepts/', prefixUrl) ]

for link in soup.findAll('a', attrs={'href': re.compile("../")}):


    newlink=str(link)

    for k, v in replacements:

        newlink = newlink.replace(k, v)

    extrachars=newlink[newlink.find("."):newlink.find(">")]
    newlink=newlink.replace(extrachars,'')


    link=newlink
    print(link)
    ##How do I save the link I have modified back to the HTML file?

print(soup)##prints the original html tree

htmlDoc.close()
关注者
0
被浏览
114
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。
    newlink = link['href']
    # .. make replacements
    link['href'] = newlink # store it back
    

    现在print(soup.prettify())将显示更改的链接。要将更改保存到文件:

    htmlDoc.close()
    
    html = soup.prettify("utf-8")
    with open("output.html", "wb") as file:
        file.write(html)
    

    要保留文档的原始字符编码,可以使用soup.original_encoding
    utf-8”代替。请参阅编码



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看