teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

追記

2018/08/17 08:06

投稿

umyu
umyu

スコア5846

answer CHANGED
@@ -38,4 +38,29 @@
38
38
 
39
39
  Pythonはインデントが重要な言語です。
40
40
  質問文のソースコード部分を以下を参考に編集してくださいな。
41
- ![コードタグの設定](56957fe805d9d7befa7dba6a98676d2b.gif)
41
+ ![コードタグの設定](56957fe805d9d7befa7dba6a98676d2b.gif)
42
+
43
+ wh = []
44
+ wh.append(wd.current_window_handle) #ウィンドウ番号の習得
45
+
46
+ ---
47
+ > whの複数保持の方法
48
+
49
+ 質問者が該当のコードを記述しているのにその質問が来るのが少し謎ですが・・・
50
+ ウィンドウ番号を下記コードで複数保持しています。
51
+ ```Python
52
+ wh = []
53
+ while num < len(numbers): #個数分、ブラウザ起動
54
+ wh.append(wd.current_window_handle) #ウィンドウ番号の習得
55
+ ```
56
+ よって同じように
57
+ ```
58
+ wdl = []
59
+ while num < len(numbers): #個数分、ブラウザ起動
60
+ wd = web.Chrome()
61
+ # 中略
62
+ wdl.append(wd)
63
+ ```
64
+
65
+ 回答した後に気づきましたが、yahooファイナンスは`https://finance.yahoo.co.jp/` [Yahoo!ファイナンスヘルプ](https://www.yahoo-help.jp/app/answers/detail/p/546/a_id/93575)規約によりスクレイピングを禁止しています。
66
+ という訳でこれ以上は回答できかねるので悪しからずご容赦くださいな。

2

追記

2018/08/17 08:06

投稿

umyu
umyu

スコア5846

answer CHANGED
@@ -10,12 +10,30 @@
10
10
 
11
11
  ---
12
12
 
13
- カウンタ変数を手動でインクリメントするのはバグの元なので、できるだけ避けてください。
13
+ カウンタ変数を手動でインクリメント(加算)するのはバグの元なので、できるだけ避けてください。
14
14
  カウンタ変数の値を正しく更新するのは、プログラマー側の責任になりそして人は容易に間違えます。
15
+ 代替手段として`enumerate`と`range`が使えます。
16
+ 参考情報:[Pythonのfor文によるループ処理(range, enumerate, zipなど)](https://note.nkmk.me/python-for-usage/)
17
+ この指摘をした理由は
18
+ 質問文のソースコードより抜粋しますが、以下の部分は正しく実装されていないのではと思ったからです。
19
+ ```Python
20
+ num = 0
21
+ while num <len(numbers):
22
+ print(wh[num])
23
+ wd.switch_to_window(wh[num])
24
+ wd.refresh()
25
+ try:
26
+ # 中略
27
+ num += 1
28
+ wd.switch_to_window(wh[num])
29
+ except:
30
+ # 加算後にswitch_to_windowを行っているが、while ループの先頭でもswitch_to_windowを行っている。
31
+ nun += 1
32
+ #この位置で例外発生時にwhileループが中断される。
33
+ wd.switch_to_window(wh[num])
34
+ # whileループにある、wd.refresh()が無いtryの中も同様
35
+ ```
15
36
 
16
- [Pythonのfor文によるループ処理(range, enumerate, zipなど)](https://note.nkmk.me/python-for-usage/)
17
- enumerateとrangeが使えるかと。
18
-
19
37
  ---
20
38
 
21
39
  Pythonはインデントが重要な言語です。

1

追記

2018/08/16 20:24

投稿

umyu
umyu

スコア5846

answer CHANGED
@@ -10,6 +10,14 @@
10
10
 
11
11
  ---
12
12
 
13
+ カウンタ変数を手動でインクリメントするのはバグの元なので、できるだけ避けてください。
14
+ カウンタ変数の値を正しく更新するのは、プログラマー側の責任になりそして人は容易に間違えます。
15
+
16
+ [Pythonのfor文によるループ処理(range, enumerate, zipなど)](https://note.nkmk.me/python-for-usage/)
17
+ enumerateとrangeが使えるかと。
18
+
19
+ ---
20
+
13
21
  Pythonはインデントが重要な言語です。
14
22
  質問文のソースコード部分を以下を参考に編集してくださいな。
15
23
  ![コードタグの設定](56957fe805d9d7befa7dba6a98676d2b.gif)