前提・実現したいこと
書籍「Pythonによるクローラー&スクレイピング入門 設計・開発から収集データの解析まで」のサンプルコードを実行中に以下のエラーが出ました。
行き詰まってしまったので、エラーを解消する方法を教えていただければと思います。
発生している問題・エラーメッセージ
line 377, in write self.stream.write(data) TypeError: write() argument must be str, not bytes
該当のソースコード
Python
1import sys, codecs 2sys.stdout = codecs.getwriter("utf-8")(sys.stdout) 3 4import time 5import requests 6 7 8 9PAGE_URL_LIST = [ 10 'http://example.com/1.page', 11 'http://example.com/2.page', 12 'http://example.com/3.page', 13] 14 15for page_url in PAGE_URL_LIST: 16 res = requests.get(page_url, timeout=30) 17 print( 18 "ページURL: " + page_url + ", " + \ 19 "HTTPステータス: " + str(res.status_code) + ", " + \ 20 "処理時間(秒): " + str(res.elapsed.total_seconds()) 21 ) 22 time.sleep(1) 23
試したこと
サンプルコードをそのまま実行すると以下のエラーが出ました。
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-2: ordinal not in range(128)
そこで色々と調べて以下の文を追加しました。
import sys, codecs sys.stdout = codecs.getwriter("utf-8")(sys.stdout)
追加するとTypeErrorが発生し、どう対処すればよいのか分からなくなってしまいました。
補足情報(FW/ツールのバージョンなど)
環境は以下の通りです。
・Python 3.6.2
・macOS Sierra 10.12.6
・エディターはATOMを使っています
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/03/19 12:07
2018/03/19 12:16