質問編集履歴
5
補足
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
#10/
|
1
|
+
#10/25 10:20更新
|
2
2
|
(スクレイピングした結果を)リスト形式の変数に格納したのですが、上手く出力できず苦戦しています。
|
3
3
|
「カンマ区切り」[python リスト ファイル出力」等のキーワードでGoogle上を調べても解決に至らず、ご教示頂けないでしょうか。
|
4
4
|
|
@@ -32,5 +32,48 @@
|
|
32
32
|
f.writelines((str(courses_list)))
|
33
33
|
|
34
34
|
```
|
35
|
+
<追記:元のスクレイピングのコード>
|
36
|
+
```ここに言語を入力
|
37
|
+
import time
|
38
|
+
from selenium import webdriver
|
39
|
+
driver=webdriver.Chrome()
|
40
|
+
driver.get('https://www.mrso.jp/searches/?redirect&view=plan')
|
41
|
+
def search(driver):
|
42
|
+
i = 1 # ループ番号、ページ番号を定義
|
43
|
+
i_max = 5 # 最大何ページまで分析するかを定義
|
44
|
+
courses_list=[]
|
45
|
+
facili_list=[]
|
46
|
+
price_list=[]
|
47
|
+
link_list=[]
|
48
|
+
|
49
|
+
# 現在のページが指定した最大分析ページを超えるまでループする
|
50
|
+
while i <= i_max:
|
51
|
+
class_group =driver.find_element_by_class_name('page-search__list')
|
52
|
+
courses_list.append([elem.text for elem in class_group.find_elements_by_class_name('-name')])
|
53
|
+
facili_list.append([elem.text for elem in class_group.find_elements_by_class_name('-facility-name')])
|
54
|
+
price_list.append([elem.text for elem in class_group.find_elements_by_class_name('-price')])
|
55
|
+
link_list.append([elem.get_attribute('href') for elem in class_group.find_elements_by_class_name('-link')])
|
56
|
+
|
57
|
+
try:
|
58
|
+
next_list = driver.find_element_by_class_name('-next').click()
|
59
|
+
i += 1
|
60
|
+
time.sleep(3) # 3秒間待機
|
61
|
+
except:
|
62
|
+
break
|
63
|
+
|
64
|
+
return courses_list,facili_list, price_list,link_list # コース名と施設名と価格とリンクのリストを戻り値に指定
|
65
|
+
|
66
|
+
courses_list,facili_list,price_list,link_list=search(driver)
|
67
|
+
|
68
|
+
<抽出後のコード>
|
69
|
+
import pandas as pd
|
70
|
+
df=pd.DataFrame()
|
71
|
+
df['施設名']=facili_list
|
72
|
+
df['コース名']=courses_list
|
73
|
+
df['価格']=price_list
|
74
|
+
df['リンク']=link_list
|
75
|
+
df.index = df.index + 1
|
76
|
+
df.head() #上述の画像の画面
|
77
|
+
```
|
35
78
|
<リストの中身の様子>
|
36
79
|
[['人間ドック(胃ABC)全身CTスキャン *低線量AIDR3D マルチスライスCTで実施*', '人間ドック + 胃カメラコース (新規オープン価格)', ***膨大なため以下省略
|
4
補足
title
CHANGED
File without changes
|
body
CHANGED
@@ -4,6 +4,8 @@
|
|
4
4
|
|
5
5
|
<スクレイピングした結果のデータのイメージ>
|
6
6
|
1列1行にカンマ区切りで複数の中身が入っています。分割したいです。
|
7
|
+
練習用に下記ページをスクレイピングしました。
|
8
|
+
https://www.mrso.jp/searches/?redirect&view=plan
|
7
9
|

|
8
10
|
|
9
11
|
<トライしたこと>
|
3
補足
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,13 +1,24 @@
|
|
1
|
+
#10/24 23:08更新
|
1
2
|
(スクレイピングした結果を)リスト形式の変数に格納したのですが、上手く出力できず苦戦しています。
|
2
|
-
|
3
|
+
「カンマ区切り」[python リスト ファイル出力」等のキーワードでGoogle上を調べても解決に至らず、ご教示頂けないでしょうか。
|
3
4
|
|
5
|
+
<スクレイピングした結果のデータのイメージ>
|
6
|
+
1列1行にカンマ区切りで複数の中身が入っています。分割したいです。
|
7
|
+

|
8
|
+
|
4
9
|
<トライしたこと>
|
5
|
-
(1)
|
10
|
+
(1)splitで分割する
|
6
|
-
|
11
|
+
split()でカンマで分割しようとすると、なぜかNANと出力されてしまいます。出来たとしても、価格を示す列(例 100,00,200,00)は、10000,20000ではなく、100,00,200,00になる不安があります。
|
7
12
|
|
8
|
-
(2)各リストをテキストに出力して、手で(ctrl+a,c,v)エクセルに貼り付ける
|
13
|
+
(2-1)データフレームではなく、各リストをテキストに出力して、手で(ctrl+a,c,v)エクセルに貼り付ける
|
9
|
-
f.writelinesだと
|
14
|
+
f.writelinesだと上述画像と同じ状況でした。エクセル上で分割して進める事もできますが、非効率ですしpythonを覚えたいのでこの選択肢は除外します。
|
10
15
|
|
16
|
+
(2-2)同上。for文で改行を入れる。
|
17
|
+
残念ながら下記のコードでも上述画像と同じ状況でした。
|
18
|
+
with open('(ファイル名).txt', 'w') as f:
|
19
|
+
for d in range(len(コース名:list形式)):
|
20
|
+
f.write(str(courses_list[d]) + "\n")
|
21
|
+
|
11
22
|
```ここに言語を入力
|
12
23
|
(スクレイピングの関数:本題ではないので省略)
|
13
24
|
return courses_list,facili_list, price_list,link_list # コース、施設、価格、URLのリストを戻り値に指定
|
2
誤字
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
(スクレイピングした結果を)リスト形式の変数に格納したのですが、上手く出力できず苦戦しています。
|
2
|
-
低レベルの質問で恐れ入りますが、「カンマ区切り」等のキーワードでGoogle上を調べても
|
2
|
+
低レベルの質問で恐れ入りますが、「カンマ区切り」等のキーワードでGoogle上を調べても解決に至らず、ご教示頂けないでしょうか。
|
3
3
|
|
4
4
|
<トライしたこと>
|
5
5
|
(1)データフレームに集約して出力する
|
1
補足
title
CHANGED
File without changes
|
body
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
各リストをDataFrameに入れると、1列1行にカンマ区切りで複数の中身が入る。そこで、split()でカンマで分割しようとすると、なぜかNANと出力される。出来たとしても、価格を示す列(例 100,00,200,00)は、10000,20000ではなく、100,00,200,00になる不安がある。
|
7
7
|
|
8
8
|
(2)各リストをテキストに出力して、手で(ctrl+a,c,v)エクセルに貼り付ける
|
9
|
-
f.writelinesだと(1)と同じ状況でした。
|
9
|
+
f.writelinesだと(1)と同じ状況でした。エクセル上で分割して進める事もできますが、非効率ですしpythonを覚えたいのでどうか教えてください。
|
10
10
|
|
11
11
|
```ここに言語を入力
|
12
12
|
(スクレイピングの関数:本題ではないので省略)
|
@@ -19,4 +19,5 @@
|
|
19
19
|
f.writelines((str(courses_list)))
|
20
20
|
|
21
21
|
```
|
22
|
+
<リストの中身の様子>
|
22
23
|
[['人間ドック(胃ABC)全身CTスキャン *低線量AIDR3D マルチスライスCTで実施*', '人間ドック + 胃カメラコース (新規オープン価格)', ***膨大なため以下省略
|