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

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

新規登録して質問してみよう
ただいま回答率
85.48%
terminal

Terminalは、Apple社のmacOSに標準で付属しているUNIX端末エミュレータ。UNIXコマンドによってMacの操作および設定を行うことができます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

4465閲覧

Python初心者で書籍で勉強しています:urllibによるwebページの取得でターミナルが書籍通りの動きをしません

monty

総合スコア16

terminal

Terminalは、Apple社のmacOSに標準で付属しているUNIX端末エミュレータ。UNIXコマンドによってMacの操作および設定を行うことができます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2019/03/21 09:56

編集2019/03/21 09:57

前提・実現したいこと

当方の経験はprogateでPythonを勉強しただけの初心者です
現在「Pythonクローリング&スクレイピング データ収集・解析のための実践開発ガイド」を読みながらクローリング・スクレイピングの勉強をしています。
書籍どおりにいかず自分で解決できないためお知恵を拝借させていただければ助かります

書籍の内容

イメージ説明

ターミナルで作業していますが、type(f)以降の記述でエラーが出てしまいます

該当のソースコード

PC名:~ ユーザー名$ . scraping/bin/activate (scraping) iwaishinoMac-mini:~ iwaishi$ python Python 3.7.2 (default, Feb 12 2019, 08:15:36) [Clang 10.0.0 (clang-1000.11.45.5)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> from urllib.request import urlopen >>> f = urlopen('https://gihyo.jp/dp') Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/local/Cellar/python/3.7.2_2/Frameworks/Python.framework/Versions/3.7/lib/python3.7/urllib/request.py", line 222, in urlopen return opener.open(url, data, timeout) File "/usr/local/Cellar/python/3.7.2_2/Frameworks/Python.framework/Versions/3.7/lib/python3.7/urllib/request.py", line 531, in open response = meth(req, response) File "/usr/local/Cellar/python/3.7.2_2/Frameworks/Python.framework/Versions/3.7/lib/python3.7/urllib/request.py", line 641, in http_response 'http', request, response, code, msg, hdrs) File "/usr/local/Cellar/python/3.7.2_2/Frameworks/Python.framework/Versions/3.7/lib/python3.7/urllib/request.py", line 569, in error return self._call_chain(*args) File "/usr/local/Cellar/python/3.7.2_2/Frameworks/Python.framework/Versions/3.7/lib/python3.7/urllib/request.py", line 503, in _call_chain result = func(*args) File "/usr/local/Cellar/python/3.7.2_2/Frameworks/Python.framework/Versions/3.7/lib/python3.7/urllib/request.py", line 649, in http_error_default raise HTTPError(req.full_url, code, msg, hdrs, fp) urllib.error.HTTPError: HTTP Error 403: Forbidden >>> type(f) Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'f' is not defined >>> f.read() Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'f' is not defined

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

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

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

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

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

guest

回答1

0

ベストアンサー

python

1>>> f = urlopen('https://gihyo.jp/dp') 2Traceback (most recent call last): 3 File "<stdin>", line 1, in <module> 4 File "/usr/local/Cellar/python/3.7.2_2/Frameworks/Python.framework/Versions/3.7/lib/python3.7/urllib/request.py", line 222, in urlopen 5 return opener.open(url, data, timeout) 6 File "/usr/local/Cellar/python/3.7.2_2/Frameworks/Python.framework/Versions/3.7/lib/python3.7/urllib/request.py", line 531, in open 7 response = meth(req, response) 8 File "/usr/local/Cellar/python/3.7.2_2/Frameworks/Python.framework/Versions/3.7/lib/python3.7/urllib/request.py", line 641, in http_response 9 'http', request, response, code, msg, hdrs) 10 File "/usr/local/Cellar/python/3.7.2_2/Frameworks/Python.framework/Versions/3.7/lib/python3.7/urllib/request.py", line 569, in error 11 return self._call_chain(*args) 12 File "/usr/local/Cellar/python/3.7.2_2/Frameworks/Python.framework/Versions/3.7/lib/python3.7/urllib/request.py", line 503, in _call_chain 13 result = func(*args) 14 File "/usr/local/Cellar/python/3.7.2_2/Frameworks/Python.framework/Versions/3.7/lib/python3.7/urllib/request.py", line 649, in http_error_default 15 raise HTTPError(req.full_url, code, msg, hdrs, fp) 16urllib.error.HTTPError: HTTP Error 403: Forbidden

この出力が、f = urlopen('https://gihyo.jp/dp')を実行しようとして失敗した(例外が出て中断された)ということを表しています。どういう過程でそれに至ったかが途中に出ており、最後のurllib.error.HTTPError: HTTP Error 403: Forbiddenが送出された例外です。403なので、サーバにアクセスが拒否されてしまったことがわかります。

途中で失敗しているので、fには何も代入されません。type以下の2つの入力に失敗するのはそのためです。

それはそれとして、対応方法については以下の質問を見てください。

Python - 【Pythonクローリング&スクレイピング】でつまづきました|teratail

投稿2019/03/21 10:33

hayataka2049

総合スコア30933

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

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

monty

2019/03/21 14:02

ありがとうございます。 同じ悩みの人がいたのですね エラーもしっかりと読んで理解できるよう勉強したいと思います。 本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問