質問編集履歴

5

補足

2020/10/25 01:32

投稿

Dantesu
Dantesu

スコア8

test CHANGED
File without changes
test CHANGED
@@ -1,4 +1,4 @@
1
- #10/24 23:08更新
1
+ #10/25 10:20更新
2
2
 
3
3
  (スクレイピングした結果を)リスト形式の変数に格納したのですが、上手く出力できず苦戦しています。
4
4
 
@@ -66,6 +66,92 @@
66
66
 
67
67
  ```
68
68
 
69
+ <追記:元のスクレイピングのコード>
70
+
71
+ ```ここに言語を入力
72
+
73
+ import time
74
+
75
+ from selenium import webdriver
76
+
77
+ driver=webdriver.Chrome()
78
+
79
+ driver.get('https://www.mrso.jp/searches/?redirect&view=plan')
80
+
81
+ def search(driver):
82
+
83
+ i = 1 # ループ番号、ページ番号を定義
84
+
85
+ i_max = 5 # 最大何ページまで分析するかを定義
86
+
87
+ courses_list=[]
88
+
89
+ facili_list=[]
90
+
91
+ price_list=[]
92
+
93
+ link_list=[]
94
+
95
+
96
+
97
+ # 現在のページが指定した最大分析ページを超えるまでループする
98
+
99
+ while i <= i_max:
100
+
101
+ class_group =driver.find_element_by_class_name('page-search__list')
102
+
103
+ courses_list.append([elem.text for elem in class_group.find_elements_by_class_name('-name')])
104
+
105
+ facili_list.append([elem.text for elem in class_group.find_elements_by_class_name('-facility-name')])
106
+
107
+ price_list.append([elem.text for elem in class_group.find_elements_by_class_name('-price')])
108
+
109
+ link_list.append([elem.get_attribute('href') for elem in class_group.find_elements_by_class_name('-link')])
110
+
111
+
112
+
113
+ try:
114
+
115
+ next_list = driver.find_element_by_class_name('-next').click()
116
+
117
+ i += 1
118
+
119
+ time.sleep(3) # 3秒間待機
120
+
121
+ except:
122
+
123
+ break
124
+
125
+
126
+
127
+ return courses_list,facili_list, price_list,link_list # コース名と施設名と価格とリンクのリストを戻り値に指定
128
+
129
+
130
+
131
+ courses_list,facili_list,price_list,link_list=search(driver)
132
+
133
+
134
+
135
+ <抽出後のコード>
136
+
137
+ import pandas as pd
138
+
139
+ df=pd.DataFrame()
140
+
141
+ df['施設名']=facili_list
142
+
143
+ df['コース名']=courses_list
144
+
145
+ df['価格']=price_list
146
+
147
+ df['リンク']=link_list
148
+
149
+ df.index = df.index + 1
150
+
151
+ df.head() #上述の画像の画面
152
+
153
+ ```
154
+
69
155
  <リストの中身の様子>
70
156
 
71
157
  [['人間ドック(胃ABC)全身CTスキャン *低線量AIDR3D マルチスライスCTで実施*', '人間ドック + 胃カメラコース (新規オープン価格)', ***膨大なため以下省略

4

補足

2020/10/25 01:32

投稿

Dantesu
Dantesu

スコア8

test CHANGED
File without changes
test CHANGED
@@ -9,6 +9,10 @@
9
9
  <スクレイピングした結果のデータのイメージ>
10
10
 
11
11
  1列1行にカンマ区切りで複数の中身が入っています。分割したいです。
12
+
13
+ 練習用に下記ページをスクレイピングしました。
14
+
15
+ https://www.mrso.jp/searches/?redirect&view=plan
12
16
 
13
17
  ![イメージ説明](3d9dfcd7b57e6ac277630398cd18f44b.jpeg)
14
18
 

3

補足

2020/10/24 14:38

投稿

Dantesu
Dantesu

スコア8

test CHANGED
File without changes
test CHANGED
@@ -1,20 +1,42 @@
1
+ #10/24 23:08更新
2
+
1
3
  (スクレイピングした結果を)リスト形式の変数に格納したのですが、上手く出力できず苦戦しています。
2
4
 
3
- 低レベルの質問で恐れ入りますが、「カンマ区切り」等のキーワードでGoogle上を調べても解決に至らず、ご教示頂けないでしょうか。
5
+ 「カンマ区切り」[python リスト ファイル出力」等のキーワードでGoogle上を調べても解決に至らず、ご教示頂けないでしょうか。
6
+
7
+
8
+
9
+ <スクレイピングした結果のデータのイメージ>
10
+
11
+ 1列1行にカンマ区切りで複数の中身が入っています。分割したいです。
12
+
13
+ ![イメージ説明](3d9dfcd7b57e6ac277630398cd18f44b.jpeg)
4
14
 
5
15
 
6
16
 
7
17
  <トライしたこと>
8
18
 
9
- (1)データフレームに集約して出力する
19
+ (1)splitで分割する
10
20
 
11
- 各リストをDataFrameに入れると、1列1行にカンマ区切りで複数の中身が入る。そこで、split()でカンマで分割しようとすると、なぜかNANと出力され。出来たとしても、価格を示す列(例 100,00,200,00)は、10000,20000ではなく、100,00,200,00になる不安があ
21
+ split()でカンマで分割しようとすると、なぜかNANと出力されてしまいます。出来たとしても、価格を示す列(例 100,00,200,00)は、10000,20000ではなく、100,00,200,00になる不安があります
12
22
 
13
23
 
14
24
 
15
- (2)各リストをテキストに出力して、手で(ctrl+a,c,v)エクセルに貼り付ける
25
+ (2-1データフレームではなく、各リストをテキストに出力して、手で(ctrl+a,c,v)エクセルに貼り付ける
16
26
 
17
- f.writelinesだと(1)と同じ状況でした。エクセル上で分割して進める事もできますが、非効率ですしpythonを覚えたいのでどうか教えてください
27
+ f.writelinesだと上述画像と同じ状況でした。エクセル上で分割して進める事もできますが、非効率ですしpythonを覚えたいのでこの選択肢は除外します
28
+
29
+
30
+
31
+ (2-2)同上。for文で改行を入れる。
32
+
33
+ 残念ながら下記のコードでも上述画像と同じ状況でした。
34
+
35
+ with open('(ファイル名).txt', 'w') as f:
36
+
37
+ for d in range(len(コース名:list形式)):
38
+
39
+ f.write(str(courses_list[d]) + "\n")
18
40
 
19
41
 
20
42
 

2

誤字

2020/10/24 14:33

投稿

Dantesu
Dantesu

スコア8

test CHANGED
File without changes
test CHANGED
@@ -1,6 +1,6 @@
1
1
  (スクレイピングした結果を)リスト形式の変数に格納したのですが、上手く出力できず苦戦しています。
2
2
 
3
- 低レベルの質問で恐れ入りますが、「カンマ区切り」等のキーワードでGoogle上を調べても見当たらず、ご教示頂けないでしょうか。
3
+ 低レベルの質問で恐れ入りますが、「カンマ区切り」等のキーワードでGoogle上を調べても解決に至らず、ご教示頂けないでしょうか。
4
4
 
5
5
 
6
6
 

1

補足

2020/10/24 09:42

投稿

Dantesu
Dantesu

スコア8

test CHANGED
File without changes
test CHANGED
@@ -14,7 +14,7 @@
14
14
 
15
15
  (2)各リストをテキストに出力して、手で(ctrl+a,c,v)エクセルに貼り付ける
16
16
 
17
- f.writelinesだと(1)と同じ状況でした。
17
+ f.writelinesだと(1)と同じ状況でした。エクセル上で分割して進める事もできますが、非効率ですしpythonを覚えたいのでどうか教えてください。
18
18
 
19
19
 
20
20
 
@@ -40,4 +40,6 @@
40
40
 
41
41
  ```
42
42
 
43
+ <リストの中身の様子>
44
+
43
45
  [['人間ドック(胃ABC)全身CTスキャン *低線量AIDR3D マルチスライスCTで実施*', '人間ドック + 胃カメラコース (新規オープン価格)', ***膨大なため以下省略