回答編集履歴

1

追記

2019/11/06 04:53

投稿

shirai
shirai

スコア1290

test CHANGED
@@ -97,3 +97,113 @@
97
97
  これでdfに入れてみてください。
98
98
 
99
99
  [参考サイト](https://deepage.net/features/pandas-dataframe.html)
100
+
101
+
102
+
103
+ # コメントを受けて追記
104
+
105
+
106
+
107
+ では直接URLで指定してみましょう。
108
+
109
+
110
+
111
+ URLを開いたあと次のページへを一回クリックすると
112
+
113
+ URLの最後に?pn=2とついたのがわかると思います。
114
+
115
+ これがページ番号を決めているようですね。
116
+
117
+
118
+
119
+ ?pn=1でも最初のページと同じページが出てきますが、
120
+
121
+ 全部で6ページしかないので、
122
+
123
+ ?pn=7としてやると、検索結果がない旨を示す
124
+
125
+ 赤い枠が出てくると思います。
126
+
127
+
128
+
129
+ この赤い枠が出てきたら読み込み終了としてやりましょう。
130
+
131
+
132
+
133
+ ```python
134
+
135
+ # 空の辞書を宣言
136
+
137
+ university = {}
138
+
139
+
140
+
141
+ # ページカウンタ
142
+
143
+ page_num = 0
144
+
145
+
146
+
147
+ # 最初のページのURLを取得
148
+
149
+ page_url = driver.current_url + '?pn='
150
+
151
+
152
+
153
+ while True:
154
+
155
+
156
+
157
+ # 最終ページかどうか判定
158
+
159
+ if len(driver.find_elements_by_class_name('dataNone')) > 0
160
+
161
+ break
162
+
163
+
164
+
165
+ # ページ遷移
166
+
167
+ page_num += 1
168
+
169
+ driver.get(page_url + str(page_num))
170
+
171
+ time.sleep(5)
172
+
173
+
174
+
175
+ for university_box in driver.find_elements_by_class_name('gpack'):
176
+
177
+
178
+
179
+ # まぎれを削除
180
+
181
+ if not '__shi_m_gakubu_casette_override_bdtn' in university_box.get_attribute('class'):
182
+
183
+
184
+
185
+ # 大学名を取得
186
+
187
+ university_name = university_box.find_element_by_tag_name('h2').text
188
+
189
+
190
+
191
+ # 学科名を取得
192
+
193
+ subjects = set()
194
+
195
+ for h4_tag in university_box.find_elements_by_tag_name('h4'):
196
+
197
+ subjects.add(h4_tag.text)
198
+
199
+
200
+
201
+ # 大学名と学科のペアを辞書型に追加
202
+
203
+ university[university_name] = subjects
204
+
205
+
206
+
207
+ # ここからpandas処理
208
+
209
+ ```