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

回答編集履歴

1

追記

2019/11/06 04:53

投稿

shirai
shirai

スコア1290

answer CHANGED
@@ -47,4 +47,59 @@
47
47
  ---
48
48
 
49
49
  これでdfに入れてみてください。
50
- [参考サイト](https://deepage.net/features/pandas-dataframe.html)
50
+ [参考サイト](https://deepage.net/features/pandas-dataframe.html)
51
+
52
+ # コメントを受けて追記
53
+
54
+ では直接URLで指定してみましょう。
55
+
56
+ URLを開いたあと次のページへを一回クリックすると
57
+ URLの最後に?pn=2とついたのがわかると思います。
58
+ これがページ番号を決めているようですね。
59
+
60
+ ?pn=1でも最初のページと同じページが出てきますが、
61
+ 全部で6ページしかないので、
62
+ ?pn=7としてやると、検索結果がない旨を示す
63
+ 赤い枠が出てくると思います。
64
+
65
+ この赤い枠が出てきたら読み込み終了としてやりましょう。
66
+
67
+ ```python
68
+ # 空の辞書を宣言
69
+ university = {}
70
+
71
+ # ページカウンタ
72
+ page_num = 0
73
+
74
+ # 最初のページのURLを取得
75
+ page_url = driver.current_url + '?pn='
76
+
77
+ while True:
78
+
79
+ # 最終ページかどうか判定
80
+ if len(driver.find_elements_by_class_name('dataNone')) > 0
81
+ break
82
+
83
+ # ページ遷移
84
+ page_num += 1
85
+ driver.get(page_url + str(page_num))
86
+ time.sleep(5)
87
+
88
+ for university_box in driver.find_elements_by_class_name('gpack'):
89
+
90
+ # まぎれを削除
91
+ if not '__shi_m_gakubu_casette_override_bdtn' in university_box.get_attribute('class'):
92
+
93
+ # 大学名を取得
94
+ university_name = university_box.find_element_by_tag_name('h2').text
95
+
96
+ # 学科名を取得
97
+ subjects = set()
98
+ for h4_tag in university_box.find_elements_by_tag_name('h4'):
99
+ subjects.add(h4_tag.text)
100
+
101
+ # 大学名と学科のペアを辞書型に追加
102
+ university[university_name] = subjects
103
+
104
+ # ここからpandas処理
105
+ ```