質問編集履歴
5
補足
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
#10/2
|
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
補足
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
補足
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,20 +1,42 @@
|
|
1
|
+
#10/24 23:08更新
|
2
|
+
|
1
3
|
(スクレイピングした結果を)リスト形式の変数に格納したのですが、上手く出力できず苦戦しています。
|
2
4
|
|
3
|
-
|
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
|
-
|
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だと
|
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
誤字
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
補足
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で実施*', '人間ドック + 胃カメラコース (新規オープン価格)', ***膨大なため以下省略
|