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

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

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

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

Python 3.x

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

Q&A

解決済

1回答

2222閲覧

sys.argv[1]でIndexErrorが発生します。

hirahashi

総合スコア31

スクレイピング

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

Python 3.x

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

0グッド

0クリップ

投稿2020/01/30 08:05

編集2020/01/30 08:10

前提・実現したいこと

加藤耕太著の『Pythonクローリング&スクレイピング -データ収集・解析のための実践開発ガイド』
のP52を学習しており、コードを写経したらエラーが発生いたしました。コードの内容はHTTPヘッダーからエンコーディングを取得することです。エラーの改善方法を教えてください。

発生している問題・エラーメッセージ

Traceback (most recent call last):
File "C:/Users/PycharmProjects/sampleproject2/helloworld3.py", line 5, in <module>
url = sys.argv[1]
IndexError: list index out of range

該当のソースコード

import sys import requests url = sys.argv[1] r = requests.get(url) print(f'encoding: {r.encoding}', file=sys.stderr) print(r.text)

試したこと

url = sys.argv[1]
の[]にある1を0に変えて実行しました。しかし、
うまくいきませんでした。

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

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

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

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

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

Y.H.

2020/01/30 08:13

実行時した際に入力したコマンドを質問に記載ください。
y_waiwai

2020/01/30 08:14

うまく行かないとはどうなったんでしょうか。 また、そのときのsys.argvの値はどうなってますか?
hirahashi

2020/01/30 08:24

ご回答ありがとうございます。 []の中にある数字を変えるとうまくいくかなと思っただけです。 ``` import sys try: sys.argv[1] print('if') except: print('else') ``` というコードを打ち込むと ifが出力されたので1だと思います。
guest

回答1

0

ベストアンサー

sys.argv はコマンド引数ですけど、コマンド実行時にコマンド引数を指定しましたか?

スクリプト例: スクリプトファイル名 sample.py

python

1import sys 2 3print(len(sys.argv)) 4print(sys.argv)

コマンド実行例

$ python3 sample.py 1 ['sample.py'] $ python3 sample.py a b 3 ['sample.py', 'a', 'b']

インタープリタで実行した場合、sys.argv は設定されないので、そのプログラムは動きません。

$ python3 Python 3.7.6+ (heads/3.7:5c08bfe, Jan 15 2020, 14:04:23) [GCC 7.4.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import sys >>> len(sys.argv) 1 >>> sys.argv ['']

投稿2020/01/30 08:23

編集2020/01/30 08:55
shiracamus

総合スコア5406

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

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

hirahashi

2020/01/30 08:27

ご回答ありがとうございます。 初心者なものでコマンド実行というのがよく分かりません。 ただ、ソースコードをそのまま打ち込んだだけです。 エディターはPycharmです。
shiracamus

2020/01/30 08:34 編集

sys.argv はPythonスクリプトをコマンドとして起動したときに設定されるものです。 Pycharmにコマンド引数を指定して実行する機能がありませんか?
hirahashi

2020/01/30 08:45

インタープリターはPyCharmのことですか? もし、その場合PyCharmで実行できないということでしょうか?
shiracamus

2020/01/30 08:49 編集

はい。 PyCharmを使わずに、コマンドプロンプトやシェルを起動し、回答欄に書いた実行例 のように pythonコマンドの引数に自作スクリプトと表示したい引数を指定してコマンド起動してください。
hirahashi

2020/01/30 09:10

コマンドライン引数についてはおそらく解決したと思います。 しかし、別のエラーがでたので別途質問いたします。 今回はshiracamusさんがベストアンサーです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問