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

質問編集履歴

5

追記2にプログラム全体文を書きました.

2019/03/13 07:25

投稿

hiyoko-kun
hiyoko-kun

スコア23

title CHANGED
File without changes
body CHANGED
@@ -55,5 +55,87 @@
55
55
  if datetime.now().minute != 0 or 30:
56
56
  にすると正しく実行されません.
57
57
 
58
+ 追記2 プログラム全体文
59
+ ```Python
60
+ # coding: UTF-8
61
+ import urllib.request, urllib.error
62
+ from bs4 import BeautifulSoup
63
+ from datetime import datetime
64
+ import csv
65
+ import time
66
+
67
+ time_flag = True
68
+
69
+ # 永久に実行させます
70
+ while True:
71
+ # 時間が59分以外の場合は58秒間時間を待機する
72
+ if datetime.now().minute != 0 or 30:
73
+ # 59分ではないので1分(58秒)間待機します(誤差がないとは言い切れないので58秒です)
74
+ continue
75
+ time.sleep(58)
76
+
77
+ # csvを追記モードで開きます→ここでcsvを開くのはファイルが大きくなった時にcsvを開くのに時間がかかるためです
78
+ f = open('nikkei_heikin.csv', 'a')
79
+ writer = csv.writer(f, lineterminator='\n')
80
+
81
+ # 59分になりましたが正確な時間に測定をするために秒間隔で59秒になるまで抜け出せません
82
+ while datetime.now().second != 59:
83
+ # 00秒ではないので1秒待機
84
+ time.sleep(1)
85
+
86
+ # 処理が早く終わり二回繰り返してしまうのでここで一秒間待機します
87
+ time.sleep(1)
88
+
89
+ # csvに記述するレコードを作成します
90
+ csv_list = []
91
+
92
+ # 現在の時刻を年、月、日、時、分、秒で取得します
93
+ time_ = datetime.now().strftime("%Y/%m/%d %H:%M:%S")
94
+ # 1カラム目に時間を挿入します
95
+ csv_list.append(time_)
96
+
97
+ # アクセスするURL
98
+ url = "http://www.nikkei.com/markets/kabu/"
99
+
100
+ # URLにアクセスする htmlが帰ってくる → <html><head><title>経済、株価、ビジネス、政治のニュース:日経電子版</title></head><body....
101
+ html = urllib.request.urlopen(url)
102
+
103
+ # htmlをBeautifulSoupで扱う
104
+ soup = BeautifulSoup(html, "html.parser")
105
+
106
+ # span要素全てを摘出する→全てのspan要素が配列に入ってかえされます→[<span class="m-wficon triDown"></span>, <span class="l-h...
107
+ span = soup.find_all("span")
108
+
109
+ # print時のエラーとならないように最初に宣言しておきます。
110
+ nikkei_heikin = ""
111
+ # for分で全てのspan要素の中からClass="mkc-stock_prices"となっている物を探します
112
+ for tag in span:
113
+ # classの設定がされていない要素は、tag.get("class").pop(0)を行うことのできないでエラーとなるため、tryでエラーを回避する
114
+ try:
115
+ # tagの中からclass="n"のnの文字列を摘出します。複数classが設定されている場合があるので
116
+ # get関数では配列で帰ってくる。そのため配列の関数pop(0)により、配列の一番最初を摘出する
117
+ # <span class="hoge" class="foo"> → ["hoge","foo"] → hoge
118
+ string_ = tag.get("class").pop(0)
119
+
120
+ # 摘出したclassの文字列にmkc-stock_pricesと設定されているかを調べます
121
+ if string_ in "mkc-stock_prices":
122
+ # mkc-stock_pricesが設定されているのでtagで囲まれた文字列を.stringであぶり出します
123
+ nikkei_heikin = tag.string
124
+ # 摘出が完了したのでfor分を抜けます
125
+ break
126
+ except:
127
+ # パス→何も処理を行わない
128
+ pass
129
+
130
+ # 摘出した日経平均株価を時間とともに出力します。
131
+ print (time_, nikkei_heikin)
132
+ # 2カラム目に日経平均を記録します
133
+ csv_list.append(nikkei_heikin)
134
+ # csvに追記敷きます
135
+ writer.writerow(csv_list)
136
+ # ファイル破損防止のために閉じます
137
+ f.close()
138
+ ```
139
+
58
140
  時間がある時にだれか質問に答えていただけると嬉しいです.
59
141
  何卒宜しくお願い致します。

4

追記しました

2019/03/13 07:25

投稿

hiyoko-kun
hiyoko-kun

スコア23

title CHANGED
File without changes
body CHANGED
@@ -49,5 +49,11 @@
49
49
  time.sleep(58)
50
50
  ```
51
51
 
52
+ 追記
53
+ if datetime.now().minute != 0:
54
+ の時は1時間おきに実行されますが,
55
+ if datetime.now().minute != 0 or 30:
56
+ にすると正しく実行されません.
57
+
52
58
  時間がある時にだれか質問に答えていただけると嬉しいです.
53
59
  何卒宜しくお願い致します。

3

コメントアウトを修正しました

2019/03/13 07:20

投稿

hiyoko-kun
hiyoko-kun

スコア23

title CHANGED
File without changes
body CHANGED
@@ -17,7 +17,7 @@
17
17
  while True:
18
18
  # 時間が0分か30分以外の場合は58秒間時間を待機する
19
19
  if datetime.now().minute != 0 or 30:
20
- # 59分ではないので1分(58秒)間待機します(誤差がないとは言い切れないので58秒です)
20
+ # 1分(58秒)間待機します(誤差がないとは言い切れないので58秒です)
21
21
  continue
22
22
  time.sleep(58)
23
23
 
@@ -25,7 +25,7 @@
25
25
  f = open('nikkei_heikin.csv', 'a')
26
26
  writer = csv.writer(f, lineterminator='\n')
27
27
 
28
- # 59分になりましたが正確な時間に測定をするために秒間隔で59秒になるまで抜け出せません
28
+ # 正確な時間に測定をするために秒間隔で59秒になるまで抜け出せません
29
29
  while datetime.now().second != 59:
30
30
  # 00秒ではないので1秒待機
31
31
  time.sleep(1)
@@ -43,7 +43,7 @@
43
43
  while True:
44
44
  # 時間が0分か30分以外の場合は58秒間時間を待機する
45
45
  if datetime.now().minute == 0 or 30:
46
- # 59分ではないので1分(58秒)間待機します(誤差がないとは言い切れないので58秒です)
46
+ # 1分(58秒)間待機します(誤差がないとは言い切れないので58秒です)
47
47
 
48
48
  else:
49
49
  time.sleep(58)

2

コメントアウトを修正しました

2019/03/13 07:11

投稿

hiyoko-kun
hiyoko-kun

スコア23

title CHANGED
File without changes
body CHANGED
@@ -15,7 +15,7 @@
15
15
 
16
16
  # 永久に実行させます
17
17
  while True:
18
- # 時間が59分以外の場合は58秒間時間を待機する
18
+ # 時間が0か30分以外の場合は58秒間時間を待機する
19
19
  if datetime.now().minute != 0 or 30:
20
20
  # 59分ではないので1分(58秒)間待機します(誤差がないとは言い切れないので58秒です)
21
21
  continue
@@ -41,7 +41,7 @@
41
41
 
42
42
  # 永久に実行させます
43
43
  while True:
44
- # 時間が59分以外の場合は58秒間時間を待機する
44
+ # 時間が0か30分以外の場合は58秒間時間を待機する
45
45
  if datetime.now().minute == 0 or 30:
46
46
  # 59分ではないので1分(58秒)間待機します(誤差がないとは言い切れないので58秒です)
47
47
 

1

書き方を修正しました.よろしくお願いします.

2019/03/13 07:09

投稿

hiyoko-kun
hiyoko-kun

スコア23

title CHANGED
File without changes
body CHANGED
@@ -1,8 +1,16 @@
1
+ ### 前提・実現したいこと
2
+
1
- パイソンで1時間おきにプログラムを実行することはできましたが,30分おきにプログラムを実行することがきません
3
+ 30分おきにプログラムを実行したい
4
+
5
+ ### 発生している問題・エラーメッセージ
6
+
7
+ ```
2
8
  エラーメッセージが発生しませんが,30分おきに実行されません.
9
+ ```
3
10
 
4
- 該当のソースコード Python
11
+ ### 該当のソースコード
5
12
 
13
+ ```Python
6
14
  time_flag = True
7
15
 
8
16
  # 永久に実行させます
@@ -25,17 +33,21 @@
25
33
  # 処理が早く終わり二回繰り返してしまうのでここで一秒間待機します
26
34
  time.sleep(1)
27
35
 
36
+ ```
28
37
 
29
- 試したこと
38
+ ### 試したこと
30
- if else文で書くとエラーが出ました.
39
+ ```Pyhton
31
-
32
40
  time_flag = True
33
41
 
42
+ # 永久に実行させます
34
43
  while True:
44
+ # 時間が59分以外の場合は58秒間時間を待機する
35
45
  if datetime.now().minute == 0 or 30:
46
+ # 59分ではないので1分(58秒)間待機します(誤差がないとは言い切れないので58秒です)
36
47
 
37
48
  else:
38
49
  time.sleep(58)
50
+ ```
39
51
 
40
52
  時間がある時にだれか質問に答えていただけると嬉しいです.
41
- 登録したばかりですが,何卒宜しくお願い致します。
53
+ 何卒宜しくお願い致します。