質問編集履歴
1
ソースコード、エラーコードを更新いたしました。自分の考えも書き込みました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -9,6 +9,12 @@
|
|
9
9
|
1.forで回すのですが、なぜか、1行目だけをprintを続けております。
|
10
10
|
|
11
11
|
スクリプトは以前、成功したモノと対比しておりますが、2行目以降を読み込まない原因が分からず、苦慮しております。
|
12
|
+
|
13
|
+
|
14
|
+
|
15
|
+
**→tds=tr1.findAll("td")に差し替えることで、解決したと考えています。
|
16
|
+
|
17
|
+
**
|
12
18
|
|
13
19
|
|
14
20
|
|
@@ -24,7 +30,7 @@
|
|
24
30
|
|
25
31
|
|
26
32
|
|
27
|
-
###試したソースコード、
|
33
|
+
###試したソースコード、 発生したエラーコードの結果
|
28
34
|
|
29
35
|
|
30
36
|
|
@@ -44,7 +50,7 @@
|
|
44
50
|
|
45
51
|
f = codecs.open('race.csv', 'w', 'utf-8')
|
46
52
|
|
47
|
-
f.write('frame_number,horse_number,horse_name,sex_age,weight,jockey_name,horse_house,horse_weight,horse_odds,popularity'+u"\n")
|
53
|
+
#f.write('frame_number,horse_number,horse_name,sex_age,weight,jockey_name,horse_house,horse_weight,horse_odds,popularity'+u"\n")
|
48
54
|
|
49
55
|
|
50
56
|
|
@@ -56,49 +62,73 @@
|
|
56
62
|
|
57
63
|
|
58
64
|
|
59
|
-
tr_arr = soup.select("table.race_table_old > tr
|
65
|
+
tr_arr = soup.select(" table.race_table_old > tr ")
|
66
|
+
|
67
|
+
#ソースコードは確認済みです
|
68
|
+
|
69
|
+
for tr1 in tr_arr:
|
70
|
+
|
71
|
+
|
72
|
+
|
73
|
+
tds=tr1.findAll("td")
|
74
|
+
|
75
|
+
|
76
|
+
|
77
|
+
frame_number=tds[0].text
|
78
|
+
|
79
|
+
#list型であることは確認済みです
|
80
|
+
|
81
|
+
|
82
|
+
|
83
|
+
print frame_number.strip()
|
60
84
|
|
61
85
|
|
62
86
|
|
63
|
-
for tr in tr_arr:
|
64
87
|
|
65
|
-
time.sleep(1)
|
66
88
|
|
67
|
-
|
89
|
+
・エラーメッセージ
|
68
90
|
|
69
|
-
frame_number=tds[0].text
|
70
91
|
|
71
|
-
horse_number=tds[1].text
|
72
92
|
|
73
|
-
|
93
|
+
C:\Users\satoru\horse>test_race-scan.py
|
74
94
|
|
75
|
-
|
95
|
+
Traceback (most recent call last):
|
76
96
|
|
77
|
-
|
97
|
+
File "C:\Users\satoru\horse\test_race-scan.py", line 20, in <module>
|
78
98
|
|
79
|
-
|
99
|
+
frame_number=tds[0].text
|
80
100
|
|
81
|
-
|
101
|
+
IndexError: list index out of range
|
82
102
|
|
83
|
-
horse_house=tds[7].text
|
84
103
|
|
85
|
-
horse_odds=tds[9].text
|
86
104
|
|
87
|
-
|
105
|
+
C:\Users\satoru\horse>
|
88
106
|
|
89
|
-
|
107
|
+
|
108
|
+
|
109
|
+
|
90
110
|
|
91
111
|
|
92
112
|
|
93
|
-
|
94
|
-
|
95
|
-
cols = [frame_number,horse_number,horse_name,sex_age,weight,jockey_name,horse_house,horse_weight,horse_odds,popularity]
|
96
|
-
|
97
|
-
f.write(",".join(cols) + "\n")
|
113
|
+
```
|
98
114
|
|
99
115
|
|
100
116
|
|
101
|
-
|
117
|
+
###試したこと
|
118
|
+
|
119
|
+
findAllを用いて、for文で回す以前に、スクレイピング自体にエラーが発生しました。
|
120
|
+
|
121
|
+
|
122
|
+
|
123
|
+
該当ソースコードを確認して、tbodyが無いこと、リスト型であること等を踏まえたうえで、
|
124
|
+
|
125
|
+
前回のソースコードを参考にスクリプトを考えましたが、うまくいきません。
|
126
|
+
|
127
|
+
tds単独でprintさせた場合は、一斉に、tdが放出されますので、この部分のスクリプトは大丈夫と考えております。
|
128
|
+
|
129
|
+
|
130
|
+
|
131
|
+
**リスト型であるはずなのに、数字が違うということがうまく理解できません。**
|
102
132
|
|
103
133
|
|
104
134
|
|
@@ -106,55 +136,7 @@
|
|
106
136
|
|
107
137
|
|
108
138
|
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
C:\Users\satoru\horse>test_race-scan.py
|
120
|
-
|
121
|
-
1 1 プロセッコ 牝2 小野寺 土田 398(-8) 351.4 17 2
|
122
|
-
|
123
|
-
1 1 プロセッコ 牝2 小野寺 土田 398(-8) 351.4 17 2
|
124
|
-
|
125
|
-
1 1 プロセッコ 牝2 小野寺 土田 398(-8) 351.4 17 2
|
126
|
-
|
127
|
-
1 1 プロセッコ 牝2 小野寺 土田 398(-8) 351.4 17 2
|
128
|
-
|
129
|
-
1 1 プロセッコ 牝2 小野寺 土田 398(-8) 351.4 17 2
|
130
|
-
|
131
|
-
1 1 プロセッコ 牝2 小野寺 土田 398(-8) 351.4 17 2
|
132
|
-
|
133
|
-
1 1 プロセッコ 牝2 小野寺 土田 398(-8) 351.4 17 2
|
134
|
-
|
135
|
-
1 1 プロセッコ 牝2 小野寺 土田 398(-8) 351.4 17 2
|
136
|
-
|
137
|
-
1 1 プロセッコ 牝2 小野寺 土田 398(-8) 351.4 17 2
|
138
|
-
|
139
|
-
1 1 プロセッコ 牝2 小野寺 土田 398(-8) 351.4 17 2
|
140
|
-
|
141
|
-
1 1 プロセッコ 牝2 小野寺 土田 398(-8) 351.4 17 2
|
142
|
-
|
143
|
-
1 1 プロセッコ 牝2 小野寺 土田 398(-8) 351.4 17 2
|
144
|
-
|
145
|
-
```
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
###試したこと
|
150
|
-
|
151
|
-
インデントも確認しましたし、ソースコードも確認しましたが、原因が分かりません。
|
152
|
-
|
153
|
-
最後の"2"の数字も、どこの数字なのか不明でございます。
|
154
|
-
|
155
|
-
併せて、
|
156
|
-
|
157
|
-
御教示よろしくお願いいたします。
|
139
|
+
**御教示よろしくお願いいたします。**
|
158
140
|
|
159
141
|
|
160
142
|
|