質問するログイン新規登録

質問編集履歴

5

補足

2020/10/25 01:32

投稿

Dantesu
Dantesu

スコア8

title CHANGED
File without changes
body CHANGED
@@ -1,4 +1,4 @@
1
- #10/24 23:08更新
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

補足

2020/10/25 01:32

投稿

Dantesu
Dantesu

スコア8

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
  ![イメージ説明](3d9dfcd7b57e6ac277630398cd18f44b.jpeg)
8
10
 
9
11
  <トライしたこと>

3

補足

2020/10/24 14:38

投稿

Dantesu
Dantesu

スコア8

title CHANGED
File without changes
body CHANGED
@@ -1,13 +1,24 @@
1
+ #10/24 23:08更新
1
2
  (スクレイピングした結果を)リスト形式の変数に格納したのですが、上手く出力できず苦戦しています。
2
- 低レベルの質問で恐れ入りますが、「カンマ区切り」等のキーワードでGoogle上を調べても解決に至らず、ご教示頂けないでしょうか。
3
+ 「カンマ区切り」[python リスト ファイル出力」等のキーワードでGoogle上を調べても解決に至らず、ご教示頂けないでしょうか。
3
4
 
5
+ <スクレイピングした結果のデータのイメージ>
6
+ 1列1行にカンマ区切りで複数の中身が入っています。分割したいです。
7
+ ![イメージ説明](3d9dfcd7b57e6ac277630398cd18f44b.jpeg)
8
+
4
9
  <トライしたこと>
5
- (1)データフレームに集約して出力する
10
+ (1)splitで分割する
6
- 各リストをDataFrameに入れると、1列1行にカンマ区切りで複数の中身が入る。そこで、split()でカンマで分割しようとすると、なぜかNANと出力され。出来たとしても、価格を示す列(例 100,00,200,00)は、10000,20000ではなく、100,00,200,00になる不安があ
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だと(1)と同じ状況でした。エクセル上で分割して進める事もできますが、非効率ですしpythonを覚えたいのでどうか教えてください
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

誤字

2020/10/24 14:33

投稿

Dantesu
Dantesu

スコア8

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

補足

2020/10/24 09:42

投稿

Dantesu
Dantesu

スコア8

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で実施*', '人間ドック + 胃カメラコース (新規オープン価格)', ***膨大なため以下省略