Webscraperを起動して実行しているページでは、コードがうまく動作しますが、他のページ(特殊文字を含む必要があります)私は恐ろしいUnicodeEncodeErrorを得るので、それをしません。私はUnicodeDammitを含む多くのソリューションを試してきましたし、.encode( 'utf-8'、 'ignore')メソッドを使用していましたが、真のプログラマは他のスレッドの読み込みを嫌っています。問題は、私は自分のコードを修正する方法がまだ分かりません。ああ、新人プログラマーの喜び!だから、あなたはこの問題を解決する方法のいくつかのアイデアを持っていますか?PythonのSelenium/BeautifulSoup WebscraperはUnicodeEncodeErrorを保持しています
コードはここにあります(必要なものをインポートし、変数が定義されていると仮定します)。
LBfull = browser2.page_source
LBfullsoup = BeautifulSoup(LBfull, 'html.parser', from_encoding='UTF-8')
LBfileready = str(LBfullsoup.prettify())
unicodedata.normalize('NFKD', LBfileready).encode('utf-8','ignore')
file = open('D:/PATH/'+date+citynames[i]+'LB.txt', 'w')
file.write(LBfileready)
file.close()
恐ろしいトレースバックはここにある:
トレースバック(最新の呼び出しの最後):
File "fitbitloop.py", line 95, in <module>
file.write(LBfileready)
File "C:\python351\lib\encodings\cp1252.py", line 19, in encode
return codecs.charmap_encode(input,self.errors,encoding_table)[0]
UnicodeEncodeError: 'charmap' codec can't encode characters in position 1209190-
1209191: character maps to <undefined>
私が、私はこのエラーを取り除くことができない何をしたかに関係なく、思いません。マップする文字を取り除くために使用できるエラーチェックコードがありますか?私が取り組んでいるウェブサイトはグローバルなので、あらゆる種類の特殊文字があるかもしれません。私はファイルに書き込むことができないので、私は問題の文字を調べることができませんでした。私の小さなコマンドプロンプトウィンドウでも表示できないので、私が仮定している文字列の中から尋ねると、Pythonシェルで空白になります。では、この不愉快な問題をどのように克服するのですか?どんな助けも再び大変感謝しています。または、問題を解決するスレッドに私を指すことができれば、それはまた評価されるでしょう。この特定のトピックには、「正しい答え」を見つけるのが難しいほど多くのスレッドがあります。
strをエンコードしたい場合は、strをコールしないでください。書き込み時にutf-8にエンコーディングを設定する –
ファイルを見ずにファイルに書き込もうとしている場合は、 'wb'でファイルを開きます。これは、エンコーディングを気にせずに生のバイトを書き込むだけです。 –
おかげでPadraicとAdam。皆さんは私が聞いていただけのことを私に教えてくれました。私は 'wb'で動作するようにしましたが、str()の使用もやめました! –