我试图将格式化的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")))
我有" UTF-8"参数传递到prettify
以避免" UnicodeEncodeError:' ascii'编解码器无法对字符进行编码..."错误,因为我读到了我需要做的事情。问题是,我传递的任何形式的编码基本上都撤消了prettify
,只是在一行单行文本中写入/打印所有内容,其中每个新行都表示为" \ n"。这种情况发生在
soup.prettify().encode("UTF-8")
。
我也尝试过将汤定义为:
soup = BeautifulSoup(content.decode("UTF-8", "ignore"))
......但那也不起作用。 我似乎无法解决任何问题或找到解决方案,而且它让我疯了!
答案 0 :(得分:1)
我最后得到了
我需要将文件打开为二进制可写...
outputFile = open("output.html", 'wb')