質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

Unicode

Unicodeはエンコーディングの標準規格です。1つの文字コード体系で多国語の表現を可能にすることを目指して作られています。

コマンド

コマンドとは特定のタスクを行う為に、コンピュータープログラムへ提示する指示文です。多くの場合、コマンドはShellやcmdようなコマンドラインインターフェイスに対する指示文を指します。

コマンドプロンプト

コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

2621閲覧

UnicodeEncodeErrorがスクレイピングで発生する。

con2319

総合スコア52

スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

Unicode

Unicodeはエンコーディングの標準規格です。1つの文字コード体系で多国語の表現を可能にすることを目指して作られています。

コマンド

コマンドとは特定のタスクを行う為に、コンピュータープログラムへ提示する指示文です。多くの場合、コマンドはShellやcmdようなコマンドラインインターフェイスに対する指示文を指します。

コマンドプロンプト

コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/12/28 14:12

エラーコード UnicodeEncodeError: 'cp932' codec can't encode character '\u2014' in position 21146: illegal multibyte sequence

やりたい事
→コードの取得

躓いている事
→コマンドプロンプトでpythonコードを実行したけどソースコードの出力でエンコードエラーで
出力されない。
windowsではデフォルトでShift_JISになっていてそれが原因とわかってるがどうすればよいかわkらん。

現状の対応
→・コマンドプロンプトのエンコード設定をcp932からutf-8に『chcp 65001』で変えても上記と同じエラーコードが発生する。

python

1import sys 2import requests 3 4 5url = sys.argv[1] 6r = requests.get(url) 7s = r.text 8print(f'encoding: {r.encoding}',file = sys.stderr) 9print(s)
コマンドプロンプト requests_encode.py https://gihyo.jp/dp > dp.html
出力結果 encoding: UTF-8 Traceback (most recent call last): File "C:\Users\user\Desktop\scrape\requests_encode.py", line 10, in <module> print(s) UnicodeEncodeError: 'cp932' codec can't encode character '\u2014' in position 21146: illegal multibyte sequence

↑本当だったらエラー部分に指定したurlのコードが出てくる。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

meg_

2021/12/28 14:57

対象のURLを提示することは出来ますか?
meg_

2021/12/28 16:39 編集

requests_encode.py https://gihyo.jp/dp にしたら表示されませんか? ファイルへの保存が必要であればスクリプト内で記述してはどうでしょうか?
con2319

2021/12/29 01:10

そのコマンドであればちゃんと表示されます。 という事は保存部分でうまく機能してないのですね。 ちょっとやってみます。
guest

回答2

0

自己解決

python

1import sys 2import requests 3import urllib.request 4 5 6url = sys.argv[1] 7file = "dp.html" 8r = requests.get(url) 9s = r.text 10with open("dp.html","w",encoding='utf-8') as f: 11 f.write(s) 12 13print(f'encoding: {r.encoding}',file = sys.stderr) 14print("complete the save!!")

結局、コマンドプロンプトではできなかったのでスクリプトの方で保存しました。

投稿2021/12/29 08:35

con2319

総合スコア52

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

unicodeには存在していてcp932では存在しない文字がscript部分に含まれているため、Windowsの標準出力に出力しようとしてエラーになっています。

meg_さんが書かれているようにunicodeとしてファイルに出力することは可能です。

python

1with open('output.txt', 'w', encoding='utf-8') as f: 2 f.write(r.text) 3

もっとも「UnicodeEncodeErrorがスクレイピングで発生する。」と書かれているようにスクレイピングを行いたいのであれば、BeautifulSoupを使ったりするには問題ありませんので、わざわざファイルに出す必要もないでしょう。

投稿2021/12/29 00:18

ppaul

総合スコア24670

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問