2013-01-16 74 views
12

Python noob here ...如何保存在Python中使用BeautifulSoup對HTML文件所做的更改?

我有下面的腳本,它修改了一個html文件的hrefs(將來它將是一個目錄中的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() 

回答

35
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」。見Encodings

+0

工作正常!非常感謝! – PepeFloyd

+1

我做到了這一點,但我擊中了最大遞歸深度。任何想法爲什麼? –

+0

對於Python 3,您必須使用:'open(「output.html」,「wt」)' –

相關問題