質問編集履歴

6

コードの再修正・・・未解決

2020/10/17 12:52

投稿

Dantesu
Dantesu

スコア8

test CHANGED
File without changes
test CHANGED
@@ -1,8 +1,26 @@
1
- 検索サイト(*規約確認済)内で、情報をスクレイピングしたいのですが、調べながら作成した以下のコードでは次ページの情報まで取得できません。(10/10 23:38)listにテキスト抽出命じので、ページ遷移箇所を書き直たら今度はプログラムが終わりません。
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
- if next==[]:
75
+ if next_list==[]:
58
76
 
59
- i = i_max + 1
77
+ i = i_max + 1
60
78
 
61
79
  else:
62
80
 
63
- # 次ページのURLは-item -nextのhref属性
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
- i = i + 1 # iを更新
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

頂いた回答をヒントに、プログラムを修正しました。

2020/10/17 12:52

投稿

Dantesu
Dantesu

スコア8

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 facility')
29
+ class_group =driver.find_elements_by_class_name('page-search__wrap.facility')
52
30
 
53
- # コース名、施設名、価格、リンクを抽出しリストに追加するforループ
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
- if class_group.find_elements_by_class_name('-item -next') == []:
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
- next_page = class_group.find_elements_by_class_name('-item -next').get_attribute('href')
65
+ for elem in class_group:
84
66
 
85
- class_group.get(next_page) # 次ページへ遷移する
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

誤字

2020/10/10 14:39

投稿

Dantesu
Dantesu

スコア8

test CHANGED
@@ -1 +1 @@
1
- ごsスクレイピング:検索サイト内での次ページへの遷移
1
+ webスクレイピング:検索サイト内での次ページへの遷移
test CHANGED
File without changes

3

誤植

2020/10/10 08:22

投稿

Dantesu
Dantesu

スコア8

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

誤植

2020/10/10 08:22

投稿

Dantesu
Dantesu

スコア8

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
- # タイトルとリンクを抽出しリストに追加するforループ
53
+ # コース名、施設名、価格、リンクを抽出しリストに追加するforループ
54
54
 
55
55
  for elem in class_group:
56
56
 

1

読みにくかったため改行の挿入

2020/10/10 08:21

投稿

Dantesu
Dantesu

スコア8

test CHANGED
File without changes
test CHANGED
@@ -6,7 +6,9 @@
6
6
 
7
7
  ```python
8
8
 
9
- Jypterで作成しています。Jupyter上で次の行に入力している箇所は下記のコードで2行空けています。courses_listで始まる塊でenterを押すとエラーが出ます。
9
+ Jypterで作成しています。Jupyter上で次の行に入力している箇所は下記のコードで2行空けています。
10
+
11
+ courses_listで始まる塊でenterを押すとエラーが出ます。
10
12
 
11
13
 
12
14