2017-11-27 21 views
0

私は検索に疲れているし、繰り返しエラーを与えるコードを試して、私は本当に誰かがこれを把握するのを助けることを願っています。python3を使用してtxtファイルにHTMLコンテンツを保存する

from urllib.request import urlopen as uReq 
url1 = 'http://www.marmiton.org/recettes/menu-de-la-semaine.aspx' 
page = uReq(url1).read().decode() 
f = open("test.html", "w") 
f.write(page) 
f.close() 

が、それは私に次のエラーを与えている:

UnicodeEncodeError: 'charmap' codec can't encode character '\u2665' in position 416224: character maps to

私problemeは、私はここに私が使用しているコードだ、のpythonを使用してtxtファイルにHTMLコードを保存しようとしている とても簡単ですここで
+1

なぜ '.decode()'を使用していますか?読者の出力をファイルに流すだけではどうですか? – Soviut

+0

私はそれを使用しようとしませんでしたが、別のエラーが発生しました 'TypeError:write()引数はバイトではなくstrでなければなりません。 ' –

+0

' uReq'とは何ですか? – wwii

答えて

1

更新のソリューションです:

のPython 2.xの:

import urllib 

url1 = 'http://www.marmiton.org/recettes/menu-de-la-semaine.aspx' 
page = urllib.urlopen(url1).read() 
f = open("./test1.html", "w") 
f.write(page) 
f.close() 

のPython 3.xの:

import urllib.request 
import shutil 

url1 = 'http://www.marmiton.org/recettes/menu-de-la-semaine.aspx' 
page = urllib.request.urlopen(url1) 
print(page) 
f = open("./test2.html", "wb") 
shutil.copyfileobj(page, f) 
f.close() 

あなたは、このタスクを達成するのを助けるためにurllibを使用する必要があります。

+1

使用しているPythonのバージョンは? –

+0

申し訳ありませんが私のバージョン3.6に言及することを忘れました –

+0

私は私の解決策を更新しました。これをupvoteしてください。 –

1

あなたが要求し、BS4(BeautifulSoup)

from bs4 import BeautifulSoup 
import requests 
r = requests.get("https://stackoverflow.com/questions/47503845/save-html-content-into-a-txt-file-using-python") 
data = r.text 
soup = BeautifulSoup(data) 
print(soup) 
with open ('/tmp/test.html', 'a') as f: 
    f.write(str(soup)) 
+0

これはちょっと期待していましたが、私のideで同じエラーが表示されています。UnicodeEncodeError: 'charmap'コーデックは360940の文字 '\ u2665'をエンコードできません:の文字マップ ' –

+0

weird、私のためにうまくいきました – ProPlayerNA

0

あなたは.decodeを使用しないことにより、()メソッドは、あなたのタイプエラーを与えることを言及してみてください。 HTMLコンテンツを取得して文字列としてwrite()メソッドに渡そうとしましたか? HTMLコンテンツを三重引用符で囲み、複数行の文字列として渡す方法があります。

+0

それはどちらもうまくいきませんでした、私はそこに前のコメントでそれを言及 –

関連する問題