美丽的汤 - 任何指定的编码打破美化格式

时间:2017-06-03 01:52:27

标签: python character-encoding beautifulsoup

我试图将格式化的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"))

......但那也不起作用。 我似乎无法解决任何问题或找到解决方案,而且它让我疯了!

1 个答案:

答案 0 :(得分:1)

我最后得到了

我需要将文件打开为二进制可写...

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