2017-11-10 20 views
0

私はPythonとBeautifulSoupでいくつかのWebスクレイピングをしています。UTF-8ファイルから元の文字列を取り出す方法は?

body = soup.find("article") 
tempvar = body.find() 

fuu = open('tempfile', 'w') 
tempvar = tempvar.encode('utf-8') 
fuu.write(str(tempvar)) 
fuu.close() 

fupa = open('tempfile') 
joji = BeautifulSoup(fupa,'html.parser') 
fupa.close() 

print(joji) 

tempvarは時々絵文字で、htmlのものが含まれていますでしょう。 ファイルの内容を後で実際のhtmlファイルで使用します。

<b>mencapai\xc2\xa0batas aksara 140</b>, tapi sudah tentu itu tidak termasuk semua <i>tweet </i>yang tak pernah dihantar kerana pengguna tidak boleh nak luahkan apa yang mereka mahukan. Selepas <b>mengaktifkan aksara 280</b> pada <b>sejumlah kecil akaun </b>yang bertuah, <b>Twitter </b>mengatakan <b>hanya 1%</b> sahaja <b>pengguna yang capai had aksara 280</b>. Tulis panjang\xc2\xb2 nak buat karangan ka. \xf0\x9f\x98\x9c<br/>\n<br/>\nIa juga jarang berlaku bagi pengguna untuk mencapai aksara 280, hanya <b>2%</b> dari <i>tweet </i><b>melebihi aksara 190</b>. <b>Had aksara tweet sebanyak 280 </b>juga <b>mendapat lebih <i>likes </i>dan <i>retweets </i></b>daripada had aksara <i>tweet </i>sebanyak 140. \xf0\x9f\x98\x8a<br/>\n<br/> 
+0

あなたはPythonとBeautifulSoupのどのバージョンを使用していますか?あなたの問題を再現することができません。 – Blender

+0

python 3.6.3およびBS4 – nestalgia

+0

Windowsを使用していますか? 'str(joji).encode( 'utf-8')'をファイルに書き込んで、それが正しくエンコードされているかどうか確認できますか? – Blender

答えて

1

tempvarは、Unicode文字列である:

プリント(譲二)はこのような何かを作り出します。ファイルにそれを正しく書き込むには:

with open('tempfile', 'w', encoding='utf8') as fuu: 
    fuu.write(tempvar) 

背面とでそれを読む:

with open('tempfile', encoding='utf8') as fupa: 
    ... 
+0

ありがとう、それは実際それと同じくらい簡単です。 – nestalgia

関連する問題