文字セットが指定されていないWebページの読み取りに問題があります。ユーロ通貨などのASCII以外の文字が含まれているため、ブラウザで正常に読み取ることができます。Firefoxのページ情報で、エンコーディングが使用されていることがわかります。は「ISO-8859-1」であり、レンダリングモードは「Quirksモード」です。ただし、python-requestsはこれらの非ASCII文字を実際にデコードできず、たとえばその文字列をテキストファイルに書き込もうとするとエラーが発生します。例:
result = requests.get(url)
result.encoding = 'ISO-8859-1'
html = result.text
open('textfile.txt', 'w').write(html)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode character u'\x80'
u'\x80'が'ISO-8859-1'エンコーディングでユーロ通貨を表す必要がある場合、これは機能するはずです
print '\x80'.decode('ISO-8859-1')
しかし、私はユーロではなく、印刷できない文字を取得します。
では、そのWebページはブラウザーでどのように機能しますが、requests(urllib / 2も)はそのエンコーディングを処理できませんか?'utf-8'でも試してみましたが、同じことです。助言がありますか?