回答編集履歴
1
追記
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
|
+
```
|