回答編集履歴

1

サンプルコードの追加

2017/05/23 10:32

投稿

YouheiSakurai
YouheiSakurai

スコア6142

test CHANGED
@@ -7,3 +7,211 @@
7
7
 
8
8
 
9
9
  http://selenium-python.readthedocs.io
10
+
11
+
12
+
13
+ 追記(スクレイピングはほどほどに)
14
+
15
+ ====
16
+
17
+
18
+
19
+ ```python
20
+
21
+ from contextlib import closing
22
+
23
+ from operator import attrgetter
24
+
25
+ from pprint import pprint
26
+
27
+ from subprocess import DEVNULL
28
+
29
+ from subprocess import Popen
30
+
31
+ import time
32
+
33
+
34
+
35
+ from selenium import webdriver
36
+
37
+ from selenium.webdriver.common.keys import Keys
38
+
39
+
40
+
41
+
42
+
43
+ data = {}
44
+
45
+
46
+
47
+ try:
48
+
49
+ server = Popen("chromedriver.exe", stdout=DEVNULL)
50
+
51
+ with closing(webdriver.Chrome()) as driver:
52
+
53
+ driver.implicitly_wait(10)
54
+
55
+ driver.get("https://data.j-league.or.jp/SFIX02/")
56
+
57
+ lbox = driver.find_element_by_id("pullDown")
58
+
59
+ rbox = driver.find_element_by_id("teams")
60
+
61
+
62
+
63
+ def iter_opt_texts(box, start=0):
64
+
65
+ yield from map(
66
+
67
+ attrgetter("text"),
68
+
69
+ box.find_elements_by_tag_name("option")[start:],
70
+
71
+ )
72
+
73
+
74
+
75
+ for ltext in iter_opt_texts(lbox, 1):
76
+
77
+ lbox.send_keys(Keys.ARROW_DOWN)
78
+
79
+ time.sleep(1)
80
+
81
+ data[ltext] = list(iter_opt_texts(rbox, 1))
82
+
83
+ finally:
84
+
85
+ server.terminate()
86
+
87
+
88
+
89
+ pprint(data)
90
+
91
+ ```
92
+
93
+
94
+
95
+ 実行結果
96
+
97
+
98
+
99
+ ```
100
+
101
+ {'J1リーグ': ['北海道コンサドーレ札幌',
102
+
103
+ 'ベガルタ仙台',
104
+
105
+ '鹿島アントラーズ',
106
+
107
+ '浦和レッズ',
108
+
109
+ '大宮アルディージャ',
110
+
111
+ '柏レイソル',
112
+
113
+ 'FC東京',
114
+
115
+ '川崎フロンターレ',
116
+
117
+ '横浜F・マリノス',
118
+
119
+ 'ヴァンフォーレ甲府',
120
+
121
+ 'アルビレックス新潟',
122
+
123
+ '清水エスパルス',
124
+
125
+ 'ジュビロ磐田',
126
+
127
+ 'ガンバ大阪',
128
+
129
+ 'セレッソ大阪',
130
+
131
+ 'ヴィッセル神戸',
132
+
133
+ 'サンフレッチェ広島',
134
+
135
+ 'サガン鳥栖'],
136
+
137
+ 'J2リーグ': ['モンテディオ山形',
138
+
139
+ '水戸ホーリーホック',
140
+
141
+ 'ザスパクサツ群馬',
142
+
143
+ 'ジェフユナイテッド千葉',
144
+
145
+ '東京ヴェルディ',
146
+
147
+ 'FC町田ゼルビア',
148
+
149
+ '横浜FC',
150
+
151
+ '湘南ベルマーレ',
152
+
153
+ '松本山雅FC',
154
+
155
+ 'ツエーゲン金沢',
156
+
157
+ '名古屋グランパス',
158
+
159
+ 'FC岐阜',
160
+
161
+ '京都サンガF.C.',
162
+
163
+ 'ファジアーノ岡山',
164
+
165
+ 'レノファ山口FC',
166
+
167
+ 'カマタマーレ讃岐',
168
+
169
+ '徳島ヴォルティス',
170
+
171
+ '愛媛FC',
172
+
173
+ 'アビスパ福岡',
174
+
175
+ 'V・ファーレン長崎',
176
+
177
+ 'ロアッソ熊本',
178
+
179
+ '大分トリニータ'],
180
+
181
+ 'J3リーグ': ['グルージャ盛岡',
182
+
183
+ 'ブラウブリッツ秋田',
184
+
185
+ '福島ユナイテッドFC',
186
+
187
+ '栃木SC',
188
+
189
+ 'Y.S.C.C.横浜',
190
+
191
+ 'SC相模原',
192
+
193
+ 'AC長野パルセイロ',
194
+
195
+ 'カターレ富山',
196
+
197
+ '藤枝MYFC',
198
+
199
+ 'アスルクラロ沼津',
200
+
201
+ 'ガイナーレ鳥取',
202
+
203
+ 'ギラヴァンツ北九州',
204
+
205
+ '鹿児島ユナイテッドFC',
206
+
207
+ 'FC琉球',
208
+
209
+ 'FC東京U-23',
210
+
211
+ 'ガンバ大阪U-23',
212
+
213
+ 'セレッソ大阪U-23']}
214
+
215
+
216
+
217
+ ```