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

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

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

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

Python

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

Qiita:Team

Qiita:Teamは、社内向けの情報共有ツールです。Markdown記法に対応しており、プレーンテキストを容易に書くことができます。また、日報や議事録などの投稿用テンプレート作成も簡単です。さらに、コメント機能やメンション機能も搭載されています。

Q&A

解決済

1回答

1567閲覧

python qiitaを参考にしたbotの開発におけるlist index out of range問題

Ponimaru

総合スコア6

Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

Python

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

Qiita:Team

Qiita:Teamは、社内向けの情報共有ツールです。Markdown記法に対応しており、プレーンテキストを容易に書くことができます。また、日報や議事録などの投稿用テンプレート作成も簡単です。さらに、コメント機能やメンション機能も搭載されています。

0グッド

0クリップ

投稿2020/06/24 10:06

編集2020/06/24 10:09

参考にした記事

https://qiita.com/ogi-iii/items/cc9a7bc45f7b15001440

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

IndexError Traceback (most recent call last) <ipython-input-1-5ea6d0fc191f> in <module> 24 #choose a stock out of list 25 stockClick=browser.find_elements_by_class_name("clickable") ---> 26 stockClick[num].find_element_by_tag_name("a").click() 27 28 stockTable=browser.find_element_by_class_name("table_wrap") IndexError: list index out of range

該当のソースコード

python

1#ready for scraping 2columnNames=[] 3ETFComparisonsTable=[] 4for num in range(0,48): 5 browser.get("https://kabuoji3.com/stock/") 6 stockSearch=browser.find_element_by_class_name("form_inputs") 7 stockSearchForm=stockSearch.find_element_by_class_name("form_txt") 8 stockSearchForm.send_keys("ETF") 9 btnClick=browser.find_element_by_class_name("btn_submit") 10 btnClick.click() 11 12 #choose a stock out of list 13 stockClick=browser.find_elements_by_class_name("clickable") 14 stockClick[num].find_element_by_tag_name("a").click() 15 16 stockTable=browser.find_element_by_class_name("table_wrap") 17 stockLine=stockTable.find_elements_by_tag_name("tr") 18 19 #price scraping with calculation 20 if len(stockLine)==302: 21 ETFComparisons=[] 22 for i in range(2,152): 23 stockETFPriceAfter=stockLine[i-1].find_elements_by_tag_name("td") 24 stockETFPriceBefore=stockLine[i].find_elements_by_tag_name("td") 25 ETFComparison=float(stockETFPriceAfter[6].text)-float(stockETFPriceBefore[6].text) 26 ETFComparisons.append(ETFComparison) 27 28 stockETFPriceAfter=stockLine[151].find_elements_by_tag_name("td") 29 stockETFPriceBefore=stockLine[153].find_elements_by_tag_name("td") 30 ETFComparison=float(stockETFPriceAfter[6].text)-float(stockETFPriceBefore[6].text) 31 ETFComparisons.append(ETFComparison) 32 33 for i in range(154,302): 34 stockETFPriceAfter=stockLine[i-1].find_elements_by_tag_name("td") 35 stockETFPriceBefore=stockLine[i].find_elements_by_tag_name("td") 36 ETFComparison=float(stockETFPriceAfter[6].text)-float(stockETFPriceBefore[6].text) 37 ETFComparisons.append(ETFComparison) 38 39 ETFComparisonsTable.append(ETFComparisons) 40 41 #pick up title 42 stockTitleBox=browser.find_element_by_class_name("base_box_ttl") 43 stockTitle=stockTitleBox.find_element_by_class_name("jp").text 44 columnNames.append(stockTitle) 45 46#making ETF table 47ETFTable=pd.DataFrame(ETFComparisonsTable) 48ETFTable=ETFTable.T 49ETFTable.columns=columnNames 50#checking ETF table 51ETF.tail()

補足情報(FW/ツールのバージョンなど)

参考にしたQiitaの記事
https://qiita.com/ogi-iii/items/cc9a7bc45f7b15001440

jupyter lab

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

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

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

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

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

guest

回答1

0

ベストアンサー

いくつかエラーハンドリングが必要です。

stockClick[num].find_element_by_tag_name("a").click()

の前に

if num >= len(stockClick): continue

を追加。

stockTable=browser.find_element_by_class_name("table_wrap")

の1行を

try: stockTable=browser.find_element_by_class_name("table_wrap") except: continue

の4行に差し替え

投稿2020/06/24 13:03

sfdust

総合スコア1135

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

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

Ponimaru

2020/06/24 13:39

回答ありがとうございます。 今度はこのようなエラーが出ました。 ```python NoSuchElementException Traceback (most recent call last) <ipython-input-1-8783f502fee9> in <module> 16 for num in range(0,48): 17 browser.get("https://kabuoji3.com/stock/") ---> 18 stockSearch=browser.find_element_by_class_name("form_inputs") 19 stockSearchForm=stockSearch.find_element_by_class_name("form_txt") 20 stockSearchForm.send_keys("ETF") ~/opt/anaconda3/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py in find_element_by_class_name(self, name) 562 element = driver.find_element_by_class_name('foo') 563 """ --> 564 return self.find_element(by=By.CLASS_NAME, value=name) 565 566 def find_elements_by_class_name(self, name): ~/opt/anaconda3/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py in find_element(self, by, value) 976 return self.execute(Command.FIND_ELEMENT, { 977 'using': by, --> 978 'value': value})['value'] 979 980 def find_elements(self, by=By.ID, value=None): ~/opt/anaconda3/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py in execute(self, driver_command, params) 319 response = self.command_executor.execute(driver_command, params) 320 if response: --> 321 self.error_handler.check_response(response) 322 response['value'] = self._unwrap_value( 323 response.get('value', None)) ~/opt/anaconda3/lib/python3.7/site-packages/selenium/webdriver/remote/errorhandler.py in check_response(self, response) 240 alert_text = value['alert'].get('text') 241 raise exception_class(message, screen, stacktrace, alert_text) --> 242 raise exception_class(message, screen, stacktrace) 243 244 def _value_or_default(self, obj, key, default): NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":".form_inputs"} (Session info: chrome=83.0.4103.106) ```
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問