回答編集履歴

1

一部修正+説明追加

2022/01/17 08:55

投稿

ppaul
ppaul

スコア24666

test CHANGED
@@ -1,7 +1,7 @@
1
1
  - requestsで返ってくるのは機械語に近いデータであり、それをbeautifulsoupの変換によってhtmlに直されているみたいなイメージかなと思いました。
2
2
 
3
3
  違います。
4
- requests.contentsで帰ってくるのがhtmlです。ただし、utf8でdecodeしないと、日本語フォントで表示できないだけです。以下を見てください。
4
+ requests.getの戻り値のcontents属性がhtmlです。ただし、utf8でdecodeしないと、日本語フォントで表示できないだけです。以下を見てください。
5
5
 
6
6
  ```python
7
7
  >>> aiueo_encoded = 'あいうえお'.encode()
@@ -13,5 +13,8 @@
13
13
 
14
14
  encodeとdecodeについては、[公式ドキュメント Unicode HOWTO](https://docs.python.org/ja/3/howto/unicode.html)をお読みください。
15
15
 
16
+ requests.getの戻り値のtext属性はdecodeしたhtmlになるのですが、scriptが含まれている場合などにdecodeに失敗する場合があるようです。
17
+ そのため、日本語のhtmlをdecodeする場合は、text属性を使うよりも、contents属性をBeautifulSoupに渡してBeautifulSoupでdecodeさせたほうが良いとされています。
16
18
 
17
19
 
20
+