質問編集履歴
6
コードの再修正・・・未解決
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,8 +1,26 @@
|
|
1
|
-
検索サイト(*規約確認済)内で、情報をスクレイピングしたいのですが、調べながら作成した以下のコードでは次ページの情報まで取得できません。(10/1
|
1
|
+
検索サイト(*規約確認済)内で、情報をスクレイピングしたいのですが、調べながら作成した以下のコードでは次ページの情報まで取得できません。(10/17 21:48)コードを再度改めてみましたが、エラーは出なくなりましたが、ページ遷移しません。中身も取れていません。
|
2
|
+
|
3
|
+
|
4
|
+
|
5
|
+
(10/10 23:38)
|
6
|
+
|
7
|
+
listにテキスト抽出を命じていたので、ページ遷移箇所を書き直したら今度はプログラムが終わりません。
|
2
8
|
|
3
9
|
どうぞ宜しくお願いします。
|
4
10
|
|
5
|
-
```python
|
11
|
+
```python 10/17編集済み
|
12
|
+
|
13
|
+
import time
|
14
|
+
|
15
|
+
from selenium import webdriver
|
16
|
+
|
17
|
+
driver=webdriver.Chrome()
|
18
|
+
|
19
|
+
|
20
|
+
|
21
|
+
driver.get('https://www.mrso.jp/searches/?redirect&view=plan')
|
22
|
+
|
23
|
+
|
6
24
|
|
7
25
|
def search(driver):
|
8
26
|
|
@@ -52,23 +70,17 @@
|
|
52
70
|
|
53
71
|
for elem in class_group:
|
54
72
|
|
55
|
-
next=elem.find_elements_by_class_name('-item -next')
|
73
|
+
next_list=elem.find_elements_by_class_name('-item -next')
|
56
74
|
|
57
|
-
|
75
|
+
if next_list==[]:
|
58
76
|
|
59
|
-
|
77
|
+
i = i_max + 1
|
60
78
|
|
61
79
|
else:
|
62
80
|
|
63
|
-
|
81
|
+
next_list.click()
|
64
82
|
|
65
|
-
for elem in class_group:
|
66
|
-
|
67
|
-
next_page = elem.find_elements_by_class_name('-item -next').get_attribute('href')
|
68
|
-
|
69
|
-
driver.get(next_page) # 次ページへ遷移する
|
70
|
-
|
71
|
-
|
83
|
+
i = i + 1 # iを更新
|
72
84
|
|
73
85
|
time.sleep(3) # 3秒間待機
|
74
86
|
|
@@ -76,14 +88,10 @@
|
|
76
88
|
|
77
89
|
|
78
90
|
|
91
|
+
courses_list,facili_list,price_list,link_list=search(driver)
|
79
92
|
|
80
93
|
|
81
94
|
|
82
95
|
|
83
|
-
courses_list,facili_list,price_list,link_list=search(driver)
|
84
|
-
|
85
|
-
search.quit()
|
86
|
-
|
87
|
-
|
88
96
|
|
89
97
|
```
|
5
頂いた回答をヒントに、プログラムを修正しました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,32 +1,8 @@
|
|
1
|
-
検索サイト(*規約確認済)内で、情報をスクレイピングしたいのですが、調べながら作成した以下のコードでは次ページの情報まで取得できません。
|
1
|
+
検索サイト(*規約確認済)内で、情報をスクレイピングしたいのですが、調べながら作成した以下のコードでは次ページの情報まで取得できません。(10/10 23:38)listにテキスト抽出を命じていたので、ページ遷移箇所を書き直したら今度はプログラムが終わりません。
|
2
|
-
|
3
|
-
invalid selector: Compound class names not permitted
|
4
2
|
|
5
3
|
どうぞ宜しくお願いします。
|
6
4
|
|
7
5
|
```python
|
8
|
-
|
9
|
-
Jypterで作成しています。Jupyter上で次の行に入力している箇所は下記のコードで2行空けています。
|
10
|
-
|
11
|
-
courses_listで始まる塊でenterを押すとエラーが出ます。
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
import time
|
16
|
-
|
17
|
-
from selenium import webdriver
|
18
|
-
|
19
|
-
driver=webdriver.Chrome()
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
driver.get('https://www.mrso.jp/searches/?redirect&view=plan')
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
6
|
|
31
7
|
def search(driver):
|
32
8
|
|
@@ -42,15 +18,17 @@
|
|
42
18
|
|
43
19
|
link_list=[]
|
44
20
|
|
21
|
+
next_list=[]
|
22
|
+
|
45
23
|
|
46
24
|
|
47
25
|
# 現在のページが指定した最大分析ページを超えるまでループする
|
48
26
|
|
49
27
|
while i <= i_max:
|
50
28
|
|
51
|
-
class_group =driver.find_elements_by_class_name('page-search__wrap
|
29
|
+
class_group =driver.find_elements_by_class_name('page-search__wrap.facility')
|
52
30
|
|
53
|
-
#
|
31
|
+
# タイトルとリンクを抽出しリストに追加するforループ
|
54
32
|
|
55
33
|
for elem in class_group:
|
56
34
|
|
@@ -72,23 +50,31 @@
|
|
72
50
|
|
73
51
|
# 「次へ」は1つしかないが、あえてelementsで複数検索。空のリストであれば最終ページの意味になる。
|
74
52
|
|
75
|
-
|
53
|
+
for elem in class_group:
|
76
54
|
|
55
|
+
next=elem.find_elements_by_class_name('-item -next')
|
56
|
+
|
57
|
+
if next==[]:
|
58
|
+
|
77
|
-
i = i_max + 1
|
59
|
+
i = i_max + 1
|
78
60
|
|
79
61
|
else:
|
80
62
|
|
81
63
|
# 次ページのURLは-item -nextのhref属性
|
82
64
|
|
83
|
-
|
65
|
+
for elem in class_group:
|
84
66
|
|
85
|
-
class_
|
67
|
+
next_page = elem.find_elements_by_class_name('-item -next').get_attribute('href')
|
86
68
|
|
69
|
+
driver.get(next_page) # 次ページへ遷移する
|
70
|
+
|
87
|
-
i = i + 1 # iを更新
|
71
|
+
i = i + 1 # iを更新
|
88
72
|
|
89
73
|
time.sleep(3) # 3秒間待機
|
90
74
|
|
91
|
-
return courses_list,facili_list, price_list,link_list #
|
75
|
+
return courses_list,facili_list, price_list,link_list # タイトルとリンクのリストを戻り値に指定
|
76
|
+
|
77
|
+
|
92
78
|
|
93
79
|
|
94
80
|
|
4
誤字
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
webスクレイピング:検索サイト内での次ページへの遷移
|
test
CHANGED
File without changes
|
3
誤植
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
スクレイピング:検索サイト内での次ページへの遷移
|
1
|
+
ごsスクレイピング:検索サイト内での次ページへの遷移
|
test
CHANGED
@@ -88,7 +88,7 @@
|
|
88
88
|
|
89
89
|
time.sleep(3) # 3秒間待機
|
90
90
|
|
91
|
-
return courses_list,facili_list, price_list,link_list #
|
91
|
+
return courses_list,facili_list, price_list,link_list # コース名、施設名、価格、リンクを戻り値に指定
|
92
92
|
|
93
93
|
|
94
94
|
|
2
誤植
test
CHANGED
File without changes
|
test
CHANGED
@@ -50,7 +50,7 @@
|
|
50
50
|
|
51
51
|
class_group =driver.find_elements_by_class_name('page-search__wrap facility')
|
52
52
|
|
53
|
-
#
|
53
|
+
# コース名、施設名、価格、リンクを抽出しリストに追加するforループ
|
54
54
|
|
55
55
|
for elem in class_group:
|
56
56
|
|
1
読みにくかったため改行の挿入
test
CHANGED
File without changes
|
test
CHANGED
@@ -6,7 +6,9 @@
|
|
6
6
|
|
7
7
|
```python
|
8
8
|
|
9
|
-
Jypterで作成しています。Jupyter上で次の行に入力している箇所は下記のコードで2行空けています。
|
9
|
+
Jypterで作成しています。Jupyter上で次の行に入力している箇所は下記のコードで2行空けています。
|
10
|
+
|
11
|
+
courses_listで始まる塊でenterを押すとエラーが出ます。
|
10
12
|
|
11
13
|
|
12
14
|
|