質問編集履歴

1

質問内容の変更

2018/10/19 04:08

投稿

ploxolq.tt
ploxolq.tt

スコア16

test CHANGED
@@ -1 +1 @@
1
- HTMLファルをWEB上にアップロードすると文字コードがISO-8859-1になってしまう
1
+ PythonのBeautifulSoupでスクレピングするとhtml(utf-8)の文字コードがISO-8859-1になってしまう
test CHANGED
@@ -1,3 +1,95 @@
1
+ こちらのQ&Aは、
2
+
3
+ 途中で質問の内容が変わってしまったため、
4
+
5
+ 一見すると質問と回答が食い違ってしまっています。
6
+
7
+
8
+
9
+ そのため、こちらに一連の流れを記載しておきます。
10
+
11
+ ご迷惑をおかけいたします。
12
+
13
+
14
+
15
+ ----------------------
16
+
17
+
18
+
19
+ 【当初の質問:HTMLファイルをWEB上にアップロードすると文字コードがISO-8859-1になってしまう】
20
+
21
+
22
+
23
+ BeautifulSoupでスクレイピングをすると、BeautifulSoup上では、自分でアップロードしたWEBサイトの文字コードが「ISO-8859-1」として認識されてしまう。ローカル上では文字コードが「UTF-8」になっているため、WinSCPでアップロードするときに文字コードが変換されてしまうのでは?
24
+
25
+
26
+
27
+
28
+
29
+
30
+
31
+ しかし、WEB上にアップロードされているHTMLファイルをローカルにダウンロードし、文字コードを調べてみるとUTF-8のまま。つまり、WEB上のHTMLファイルもUTF-8のままであり、WinSCPによって文字コードが変換されているわけではない。
32
+
33
+
34
+
35
+
36
+
37
+
38
+
39
+ 回答者様のご指摘により、「WEBサイト自体に問題があるのではなく、BeautifulSoupでスクレイピングする際に文字コードが変換されている」ことが判明。
40
+
41
+
42
+
43
+
44
+
45
+
46
+
47
+ 【質問の変更:PythonのBeautifulSoupでスクレイピングするとhtml(utf-8)の文字コードがISO-8859-1になってしまう】
48
+
49
+
50
+
51
+ HTMLではcharsetで文字コードをUTF-8に指定しているにもかかわらず、なぜスクレイピングの際に文字コードが変換されてしまうのか。
52
+
53
+
54
+
55
+
56
+
57
+
58
+
59
+ レンタルサーバーの仕様により、ResponseのContent-Typeの文字コードを書き換えられてしまう(指定したcharsetを無視されてしまう)。その結果BeautifulSoupがUTF-8を認識できず、代わりにISO-8859-1として認識してしまい、その結果文字化けが発生する。
60
+
61
+
62
+
63
+
64
+
65
+
66
+
67
+ 解決する場合には、.htaccessでcharsetを修正する方法などが考えられる。ただし、今回はWEBサイト自体に問題がないことが分かったため、文字化けはBeautifulSoupサイドで工夫することで解決。
68
+
69
+
70
+
71
+ ----------------------
72
+
73
+
74
+
75
+ およそこのような流れになっています。
76
+
77
+ ご迷惑をおかけしてしまい申し訳ございません。
78
+
79
+
80
+
81
+
82
+
83
+
84
+
85
+ ↓↓↓↓↓↓↓↓
86
+
87
+ なお、当初の質問は下記の通りです。
88
+
89
+ ↓↓↓↓↓↓↓↓
90
+
91
+
92
+
1
93
  文字コードについて困っています。
2
94
 
3
95