2017-06-03 41 views
0

我試圖只寫出格式化的HTML從網站到文件。美麗的湯 - 任何指定的編碼打破美化格式化

from bs4 import BeautifulSoup 
import urllib3 

from os import sys 

if len(sys.argv) > 1: 
    url = sys.argv[1] 
    print(url) 
else: 
    url = "www.niceme.me" 

http = urllib3.PoolManager() 
content = http.request("GET", url).data 
soup = BeautifulSoup(content) 

outputFile = open("output.html", 'w') 
outputFile.truncate() 
outputFile.write(str(soup.prettify("UTF-8"))) 

我有傳入prettify的「UTF-8」參數,以避免「UnicodeEncodeError:‘ASCII’編解碼器不能在位置編碼字符...」的錯誤,因爲這是我讀我需要做的。問題是,我傳入的任何一種編碼形式基本上解除了prettify的作用,只是在一行文本中寫入/打印所有內容,其中每一行代表「\ n」。這發生在

soup.prettify().encode("UTF-8") 

以及。

我也試着定義爲湯:

soup = BeautifulSoup(content.decode("UTF-8", "ignore"))

...但是,這並不工作。 我似乎無法找出任何問題或找到解決方案,而且這讓我瘋狂!

回答

0

我得到了它,最後

我需要打開該文件作爲二進制寫...

outputFile = open("output.html", 'wb')