質問編集履歴
6
修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -110,8 +110,6 @@
|
|
110
110
|
|
111
111
|
soup = BeautifulSoup(r.content, "html.parser")
|
112
112
|
|
113
|
-
# [tag.extract() for tag in soup(string='n')] #改行削除らしい → 削除されず
|
114
|
-
|
115
113
|
|
116
114
|
|
117
115
|
main = soup.find('div', id='search_resultsRows')
|
@@ -126,21 +124,19 @@
|
|
126
124
|
|
127
125
|
```Python
|
128
126
|
|
129
|
-
#---各種情報取得---#
|
130
|
-
|
131
|
-
a2trph = []
|
127
|
+
a2trph = []
|
132
128
|
|
133
129
|
for item in m2a:
|
134
130
|
|
135
|
-
a2t = item.select_one("[class='title']").text
|
131
|
+
a2t = item.select_one("[class='title']").text
|
136
|
-
|
132
|
+
|
137
|
-
a2r = item.select_one('div.search_released').text
|
133
|
+
a2r = item.select_one('div.search_released').text
|
138
|
-
|
134
|
+
|
139
|
-
a2p = item.select_one('div.search_price').text
|
135
|
+
a2p = item.select_one('div.search_price').text
|
140
|
-
|
136
|
+
|
141
|
-
a2h = item.get('href')
|
137
|
+
a2h = item.get('href')
|
142
|
-
|
138
|
+
|
143
|
-
a2trph.append(a2t)
|
139
|
+
a2trph.append(a2t)
|
144
140
|
|
145
141
|
a2trph.append(a2r)
|
146
142
|
|
@@ -152,11 +148,9 @@
|
|
152
148
|
|
153
149
|
|
154
150
|
|
155
|
-
テキスト出力
|
156
|
-
|
157
|
-
with open("test.txt", "w", encoding="utf-8") as f:
|
151
|
+
with open("test.txt", "w", encoding="utf-8") as f:
|
158
|
-
|
152
|
+
|
159
|
-
f.write(str(a2trph))
|
153
|
+
f.write(str(a2trph))
|
160
154
|
|
161
155
|
```
|
162
156
|
|
@@ -202,18 +196,6 @@
|
|
202
196
|
|
203
197
|
|
204
198
|
|
205
|
-
【他の問題が解決後取り組みたい課題】
|
206
|
-
|
207
|
-
- VBAinputboxのようなものがPythonにはない→tkinterでユーザーフォームのようなものを1から作成しないといけない
|
208
|
-
|
209
|
-
→**保留**
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
- seleniumでサイトの操作が出来る事がわかったものの、ページ移動先のURL取得方法がわからない
|
214
|
-
|
215
|
-
→**今回のページでは必要ないと思われる**
|
216
|
-
|
217
199
|
|
218
200
|
|
219
201
|
### 補足情報(FW/ツールのバージョンなど)
|
5
問題更新
test
CHANGED
File without changes
|
test
CHANGED
@@ -88,7 +88,7 @@
|
|
88
88
|
|
89
89
|
|
90
90
|
|
91
|
-
### 解決済み(一部)2/1
|
91
|
+
### 解決済み(一部)2/15更新
|
92
92
|
|
93
93
|
※実際のサイトのclass名等を一部変更し記載しています。
|
94
94
|
|
@@ -136,7 +136,7 @@
|
|
136
136
|
|
137
137
|
a2r = item.select_one('div.search_released').text #発売日取得
|
138
138
|
|
139
|
-
a2p = item.select_one('div.search_price').text #値段取得
|
139
|
+
a2p = item.select_one('div.search_price').text.strip() #値段取得
|
140
140
|
|
141
141
|
a2h = item.get('href') #URL取得
|
142
142
|
|
@@ -148,8 +148,6 @@
|
|
148
148
|
|
149
149
|
a2trph.append(a2h)
|
150
150
|
|
151
|
-
#a2trp.append(f'{a2t}:{a2r}:{a2p}')
|
152
|
-
|
153
151
|
print(a2trph)
|
154
152
|
|
155
153
|
|
@@ -166,7 +164,7 @@
|
|
166
164
|
|
167
165
|
|
168
166
|
|
169
|
-
### 現状の問題 2/1
|
167
|
+
### 現状の問題 2/15更新
|
170
168
|
|
171
169
|
上部「解決済み」2つ目のコードで下記の様に出力されます。(一部変更)
|
172
170
|
|
@@ -174,23 +172,35 @@
|
|
174
172
|
|
175
173
|
|
176
174
|
|
175
|
+
**※コード内【値段】の部分で問題が生じております。**
|
176
|
+
|
177
177
|
csvやテキストファイルに出力する際に、**\n**や**\r**、**空白**部分が邪魔になる事と存じます。
|
178
178
|
|
179
179
|
所感ですが、HTMLのdivタグなどの部分で\nや\rが出力され、値段の部分に空白が入れられていると思われます。
|
180
180
|
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
181
|
+
** → 何故かstripで解決** 理由が知りたい・・・
|
182
|
+
|
183
|
+
|
184
|
+
|
185
|
+
**※すべてのコードで問題が生じております。**
|
186
|
+
|
187
|
+
- 各項目「'」で囲まれている。例:下記コード参照
|
188
|
+
|
189
|
+
純粋にテキストだけ欲しいのですが、何故「'」に囲まれているのでしょうか。
|
190
|
+
|
191
|
+
- 又、Excelにした際に【発売日】に「,」が入っており区切り文字として使用できません。どういった解決策がありますでしょうか。
|
192
|
+
|
193
|
+
|
194
|
+
|
195
|
+
```
|
196
|
+
|
197
|
+
['Sampletitle1 (Japanese Ver.)', '27 Nov, 2019', 'Free To Play', 'https://store.com/app/1175730/Japanese_Ver/?snr=1_7_7_151_150_1', "Sampletitle2 (Japanese version)", '10 Dec, 2014', '¥ 10,162', 'https://store.com/app/288390/Japanese_version/?snr=1_7_7_151_150_1', 'Sampletitle3', '22 Aug, 2019', '¥ 1,320¥ 1,056', 'https://store.com/app/662960/?snr=1_7_7_151_150_1', ...以下ヒット数同文]
|
198
|
+
|
199
|
+
```
|
186
200
|
|
187
201
|
この問題をどの様に解決すればよいかご教示頂ければ幸いです。コードを一から作り直しでも構いません。
|
188
202
|
|
189
|
-
|
190
|
-
|
191
|
-
['Sampletitle1 (Japanese Ver.)', '27 Nov, 2019', '\r\n Free To Play ', 'https://store.com/app/1175730/Japanese_Ver/?snr=1_7_7_151_150_1', "Sampletitle2 (Japanese version)", '10 Dec, 2014', '\r\n ¥ 10,162 ', 'https://store.com/app/288390/Japanese_version/?snr=1_7_7_151_150_1', 'Sampletitle3', '22 Aug, 2019', '\n¥ 1,320¥ 1,056 ', 'https://store.com/app/662960/?snr=1_7_7_151_150_1', ...以下ヒット数同文]
|
192
|
-
|
193
|
-
```
|
203
|
+
|
194
204
|
|
195
205
|
【他の問題が解決後取り組みたい課題】
|
196
206
|
|
4
2/14更新
test
CHANGED
File without changes
|
test
CHANGED
@@ -88,7 +88,7 @@
|
|
88
88
|
|
89
89
|
|
90
90
|
|
91
|
-
### 解決済み(一部)2/
|
91
|
+
### 解決済み(一部)2/14更新
|
92
92
|
|
93
93
|
※実際のサイトのclass名等を一部変更し記載しています。
|
94
94
|
|
@@ -130,17 +130,15 @@
|
|
130
130
|
|
131
131
|
a2trph = [] #各項目のリスト
|
132
132
|
|
133
|
-
i = 0
|
134
|
-
|
135
133
|
for item in m2a:
|
136
134
|
|
137
|
-
a2t = m
|
135
|
+
a2t = item.select_one("[class='title']").text #title取得
|
138
|
-
|
136
|
+
|
139
|
-
a2r = m
|
137
|
+
a2r = item.select_one('div.search_released').text #発売日取得
|
140
|
-
|
138
|
+
|
141
|
-
a2p = m
|
139
|
+
a2p = item.select_one('div.search_price').text #値段取得
|
142
|
-
|
140
|
+
|
143
|
-
a2h = m
|
141
|
+
a2h = item.get('href') #URL取得
|
144
142
|
|
145
143
|
a2trph.append(a2t) #新しい要素をリストの最後に追加
|
146
144
|
|
@@ -150,8 +148,6 @@
|
|
150
148
|
|
151
149
|
a2trph.append(a2h)
|
152
150
|
|
153
|
-
i += 1
|
154
|
-
|
155
151
|
#a2trp.append(f'{a2t}:{a2r}:{a2p}')
|
156
152
|
|
157
153
|
print(a2trph)
|
@@ -170,7 +166,7 @@
|
|
170
166
|
|
171
167
|
|
172
168
|
|
173
|
-
### 現状の問題 2/
|
169
|
+
### 現状の問題 2/14更新
|
174
170
|
|
175
171
|
上部「解決済み」2つ目のコードで下記の様に出力されます。(一部変更)
|
176
172
|
|
@@ -184,11 +180,15 @@
|
|
184
180
|
|
185
181
|
|
186
182
|
|
183
|
+
**※コード内【値段】の部分で問題が生じております。**
|
184
|
+
|
185
|
+
|
186
|
+
|
187
187
|
この問題をどの様に解決すればよいかご教示頂ければ幸いです。コードを一から作り直しでも構いません。
|
188
188
|
|
189
189
|
```
|
190
190
|
|
191
|
-
['
|
191
|
+
['Sampletitle1 (Japanese Ver.)', '27 Nov, 2019', '\r\n Free To Play ', 'https://store.com/app/1175730/Japanese_Ver/?snr=1_7_7_151_150_1', "Sampletitle2 (Japanese version)", '10 Dec, 2014', '\r\n ¥ 10,162 ', 'https://store.com/app/288390/Japanese_version/?snr=1_7_7_151_150_1', 'Sampletitle3', '22 Aug, 2019', '\n¥ 1,320¥ 1,056 ', 'https://store.com/app/662960/?snr=1_7_7_151_150_1', ...以下ヒット数同文]
|
192
192
|
|
193
193
|
```
|
194
194
|
|
3
更新
test
CHANGED
File without changes
|
test
CHANGED
@@ -178,7 +178,7 @@
|
|
178
178
|
|
179
179
|
|
180
180
|
|
181
|
-
csvやテキストファイルに出力する際に、\nや\r、空白部分が邪魔になる事と存じます。
|
181
|
+
csvやテキストファイルに出力する際に、**\n**や**\r**、**空白**部分が邪魔になる事と存じます。
|
182
182
|
|
183
183
|
所感ですが、HTMLのdivタグなどの部分で\nや\rが出力され、値段の部分に空白が入れられていると思われます。
|
184
184
|
|
2
全て更新
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,6 +1,8 @@
|
|
1
|
-
### 前提・実現したいこと
|
1
|
+
### 前提・実現したいこと(すべて解決するまで更新し続けます。)
|
2
|
-
|
2
|
+
|
3
|
-
【URL】【画像】【商品名】【発売日】【値段】を抜き出して出力する。(CSV、テキストなど)
|
3
|
+
**【URL】【画像】【商品名】【発売日】【値段】**を抜き出して出力する。(CSV、テキストなど)
|
4
|
+
|
5
|
+
その後、tkinterでExcelのinputboxのようなものを作成する。
|
4
6
|
|
5
7
|
```HTML
|
6
8
|
|
@@ -80,117 +82,117 @@
|
|
80
82
|
|
81
83
|
|
82
84
|
|
85
|
+
一度下記質問内で同じページをVBAスクレイピングしております。
|
86
|
+
|
87
|
+
https://teratail.com/questions/237676
|
88
|
+
|
89
|
+
|
90
|
+
|
83
|
-
###
|
91
|
+
### 解決済み(一部)2/9更新
|
92
|
+
|
84
|
-
|
93
|
+
※実際のサイトのclass名等を一部変更し記載しています。
|
94
|
+
|
85
|
-
|
95
|
+
【URL】【画像】【商品名】【発売日】【値段】の抜き出しは一応出来ております。(問題あり)
|
86
96
|
|
87
97
|
```Python
|
88
98
|
|
89
|
-
import requests
|
90
|
-
|
91
|
-
import
|
92
|
-
|
93
|
-
from bs4 import BeautifulSoup
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
#
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
p
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
#
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
```
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
https://teratail.com/questions/237676
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
スクレイピングの流れは1度経験しているのですが、Pythonのどのコードを使用すれば同じことが出来るのかが理解出来ておりません。
|
192
|
-
|
193
|
-
|
99
|
+
import requests
|
100
|
+
|
101
|
+
import urllib.request
|
102
|
+
|
103
|
+
from bs4 import BeautifulSoup
|
104
|
+
|
105
|
+
|
106
|
+
|
107
|
+
r = requests.get("https://store.com/search/?term=japanese")
|
108
|
+
|
109
|
+
|
110
|
+
|
111
|
+
soup = BeautifulSoup(r.content, "html.parser")
|
112
|
+
|
113
|
+
# [tag.extract() for tag in soup(string='n')] #改行削除らしい → 削除されず
|
114
|
+
|
115
|
+
|
116
|
+
|
117
|
+
main = soup.find('div', id='search_resultsRows')
|
118
|
+
|
119
|
+
m2a = main.find_all('a', class_='search_result_row')
|
120
|
+
|
121
|
+
|
122
|
+
|
123
|
+
```
|
124
|
+
|
125
|
+
|
126
|
+
|
127
|
+
```Python
|
128
|
+
|
129
|
+
#---各種情報取得---#
|
130
|
+
|
131
|
+
a2trph = [] #各項目のリスト
|
132
|
+
|
133
|
+
i = 0
|
134
|
+
|
135
|
+
for item in m2a:
|
136
|
+
|
137
|
+
a2t = m2a[i].select('div.ellipsis')[0].text #title取得
|
138
|
+
|
139
|
+
a2r = m2a[i].select('div.search_released')[0].text #発売日取得
|
140
|
+
|
141
|
+
a2p = m2a[i].select('div.search_price')[0].text #値段取得
|
142
|
+
|
143
|
+
a2h = m2a[i].get('href') #URL取得
|
144
|
+
|
145
|
+
a2trph.append(a2t) #新しい要素をリストの最後に追加
|
146
|
+
|
147
|
+
a2trph.append(a2r)
|
148
|
+
|
149
|
+
a2trph.append(a2p)
|
150
|
+
|
151
|
+
a2trph.append(a2h)
|
152
|
+
|
153
|
+
i += 1
|
154
|
+
|
155
|
+
#a2trp.append(f'{a2t}:{a2r}:{a2p}')
|
156
|
+
|
157
|
+
print(a2trph)
|
158
|
+
|
159
|
+
|
160
|
+
|
161
|
+
テキスト出力
|
162
|
+
|
163
|
+
with open("test.txt", "w", encoding="utf-8") as f: #with open([ファイルパス],[モード]) as [変数]
|
164
|
+
|
165
|
+
f.write(str(a2trph)) #soup.find(タグ名, 属性=値)
|
166
|
+
|
167
|
+
```
|
168
|
+
|
169
|
+
【画像】保存は終了し、現状困ったところはありません。問題があればその時にコードを記載致します。
|
170
|
+
|
171
|
+
|
172
|
+
|
173
|
+
### 現状の問題 2/9更新
|
174
|
+
|
175
|
+
上部「解決済み」2つ目のコードで下記の様に出力されます。(一部変更)
|
176
|
+
|
177
|
+
一行での記載で見づらいと思いますが実際に表示されている状態の方が良いと思いこの様に表現しています。
|
178
|
+
|
179
|
+
|
180
|
+
|
181
|
+
csvやテキストファイルに出力する際に、\nや\r、空白部分が邪魔になる事と存じます。
|
182
|
+
|
183
|
+
所感ですが、HTMLのdivタグなどの部分で\nや\rが出力され、値段の部分に空白が入れられていると思われます。
|
184
|
+
|
185
|
+
|
186
|
+
|
187
|
+
この問題をどの様に解決すればよいかご教示頂ければ幸いです。コードを一から作り直しでも構いません。
|
188
|
+
|
189
|
+
```
|
190
|
+
|
191
|
+
['\nSampletitle1 (Japanese Ver.)\n\n \n', '27 Nov, 2019', '\r\n Free To Play ', 'https://store.com/app/1175730/Japanese_Ver/?snr=1_7_7_151_150_1', "\nSampletitle2 (Japanese version)\n\n \n", '10 Dec, 2014', '\r\n ¥ 10,162 ', 'https://store.com/app/288390/Japanese_version/?snr=1_7_7_151_150_1', '\nSampletitle3~\n\n \n', '22 Aug, 2019', '\n¥ 1,320¥ 1,056 ', 'https://store.com/app/662960/?snr=1_7_7_151_150_1', ...以下ヒット数同文]
|
192
|
+
|
193
|
+
```
|
194
|
+
|
195
|
+
【他の問題が解決後取り組みたい課題】
|
194
196
|
|
195
197
|
- VBAinputboxのようなものがPythonにはない→tkinterでユーザーフォームのようなものを1から作成しないといけない
|
196
198
|
|
@@ -200,21 +202,15 @@
|
|
200
202
|
|
201
203
|
- seleniumでサイトの操作が出来る事がわかったものの、ページ移動先のURL取得方法がわからない
|
202
204
|
|
203
|
-
→**保留**
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
- おそらく当サイトはselenium操作が必要な構成はしていないのでは?
|
208
|
-
|
209
|
-
→[requests][BeautifulSoup]のみでページ移動や抽出方法がわからない
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
205
|
+
→**今回のページでは必要ないと思われる**
|
206
|
+
|
207
|
+
|
208
|
+
|
214
|
-
|
209
|
+
### 補足情報(FW/ツールのバージョンなど)
|
210
|
+
|
211
|
+
Python3.8.1 64-bit
|
212
|
+
|
215
|
-
|
213
|
+
![イメージ説明](898d1df83cafdabd77af2f40864641ca.jpeg)
|
216
|
-
|
217
|
-
|
218
214
|
|
219
215
|
当方のPython知識は、
|
220
216
|
|
@@ -223,11 +219,3 @@
|
|
223
219
|
・Excel×Python最速仕事術
|
224
220
|
|
225
221
|
こちらの2冊を読んだだけの知識で御座います。
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
### 補足情報(FW/ツールのバージョンなど)
|
230
|
-
|
231
|
-
Python3.8.1 64-bit
|
232
|
-
|
233
|
-
![イメージ説明](898d1df83cafdabd77af2f40864641ca.jpeg)
|
1
試したこと下部、当方のPython知識
test
CHANGED
File without changes
|
test
CHANGED
@@ -216,6 +216,16 @@
|
|
216
216
|
|
217
217
|
|
218
218
|
|
219
|
+
当方のPython知識は、
|
220
|
+
|
221
|
+
・独学プログラマー Python言語の基本から仕事のやり方まで
|
222
|
+
|
223
|
+
・Excel×Python最速仕事術
|
224
|
+
|
225
|
+
こちらの2冊を読んだだけの知識で御座います。
|
226
|
+
|
227
|
+
|
228
|
+
|
219
229
|
### 補足情報(FW/ツールのバージョンなど)
|
220
230
|
|
221
231
|
Python3.8.1 64-bit
|