回答編集履歴
6
変数名修正
test
CHANGED
@@ -110,9 +110,9 @@
|
|
110
110
|
|
111
111
|
|
112
112
|
|
113
|
-
def add_related_terms(self, related_term
|
113
|
+
def add_related_terms(self, related_term):
|
114
|
-
|
114
|
+
|
115
|
-
self.related_terms.append(related_term
|
115
|
+
self.related_terms.append(related_term)
|
116
116
|
|
117
117
|
|
118
118
|
|
@@ -128,6 +128,10 @@
|
|
128
128
|
|
129
129
|
soup1 = bs4.BeautifulSoup(driver.page_source, 'html.parser')
|
130
130
|
|
131
|
+
|
132
|
+
|
133
|
+
# Keywordオブジェクトを格納するためのリスト
|
134
|
+
|
131
135
|
keywords = []
|
132
136
|
|
133
137
|
|
5
修正
test
CHANGED
@@ -66,7 +66,7 @@
|
|
66
66
|
|
67
67
|
#! python3.8
|
68
68
|
|
69
|
-
#
|
69
|
+
# copyright of below codes of modified part is © 2020 taizan-hokuto
|
70
70
|
|
71
71
|
# Do not abuse.
|
72
72
|
|
@@ -188,41 +188,13 @@
|
|
188
188
|
|
189
189
|
# --- ここからスクレイピング結果を出力するコード ---
|
190
190
|
|
191
|
-
|
192
|
-
|
193
|
-
# 既に用意しているファイルを開く
|
194
|
-
|
195
|
-
wb = openpyxl.Workbook()
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
# # 既に用意したファイルがなければ新規ワークブックを作成
|
200
|
-
|
201
|
-
# wb = openpyxl.Workbook()
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
sheet = wb.active
|
206
|
-
|
207
|
-
sheet.title = 'A_rank' # ついでに「シート名」を変更
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
# フォントの設定
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
191
|
+
[略]
|
216
192
|
|
217
193
|
|
218
194
|
|
219
195
|
# 「タイトル行」を入力(事前に入力していない場合)
|
220
196
|
|
221
|
-
|
197
|
+
[略]
|
222
|
-
|
223
|
-
sheet["B1"].value = 'explaination'
|
224
|
-
|
225
|
-
sheet["C1"].value = 'related_term'
|
226
198
|
|
227
199
|
|
228
200
|
|
@@ -232,11 +204,11 @@
|
|
232
204
|
|
233
205
|
for keyword in keywords:
|
234
206
|
|
235
|
-
sheet.cell(column
|
207
|
+
sheet.cell(column=1, row=cursor, value=keyword.title)
|
236
|
-
|
208
|
+
|
237
|
-
sheet.cell(column
|
209
|
+
sheet.cell(column=2, row=cursor, value=' '.join(keyword.explanations))
|
238
|
-
|
210
|
+
|
239
|
-
sheet.cell(column
|
211
|
+
sheet.cell(column=3, row=cursor, value=','.join(keyword.related_terms))
|
240
212
|
|
241
213
|
cursor += 1
|
242
214
|
|
@@ -244,8 +216,6 @@
|
|
244
216
|
|
245
217
|
# 保存して閉じる
|
246
218
|
|
247
|
-
wb.save('./keyword_ver0.94.xlsx')
|
248
|
-
|
249
|
-
|
219
|
+
[略]
|
250
|
-
|
220
|
+
|
251
|
-
```
|
221
|
+
```
|
4
修正
test
CHANGED
@@ -32,11 +32,11 @@
|
|
32
32
|
|
33
33
|
class Keyword:
|
34
34
|
|
35
|
-
title # キーワードテキスト
|
35
|
+
title # キーワードテキスト
|
36
|
-
|
36
|
+
|
37
|
-
explanations = [] #説明 のリスト
|
37
|
+
explanations = [] # 説明 のリスト
|
38
|
-
|
38
|
+
|
39
|
-
related_terms = [] #関連用語 のリスト
|
39
|
+
related_terms = [] # 関連用語 のリスト
|
40
40
|
|
41
41
|
```
|
42
42
|
|
@@ -58,7 +58,7 @@
|
|
58
58
|
|
59
59
|
|
60
60
|
|
61
|
-
[一部略してあ
|
61
|
+
[一部略してありますので、ご自分で補完してください]
|
62
62
|
|
63
63
|
|
64
64
|
|
@@ -134,7 +134,7 @@
|
|
134
134
|
|
135
135
|
for keyword_part in soup1.select('p a'):
|
136
136
|
|
137
|
-
#キーワード文字列を取得
|
137
|
+
# キーワード文字列を取得
|
138
138
|
|
139
139
|
title = keyword_part.getText()
|
140
140
|
|
@@ -142,48 +142,50 @@
|
|
142
142
|
|
143
143
|
continue
|
144
144
|
|
145
|
-
#Keyword オブジェクトの生成
|
145
|
+
# Keyword オブジェクトの生成
|
146
146
|
|
147
147
|
kw = Keyword(title)
|
148
148
|
|
149
|
+
|
150
|
+
|
151
|
+
# キーワードの説明のページに遷移しHTMLを取得
|
152
|
+
|
153
|
+
url = keyword_part.get('href')
|
154
|
+
|
155
|
+
driver.get(url)
|
156
|
+
|
157
|
+
sleep(10)
|
158
|
+
|
159
|
+
soup2 = bs4.BeautifulSoup(driver.page_source, 'html.parser')
|
160
|
+
|
161
|
+
soup3 = bs4.BeautifulSoup(driver.page_source, 'html.parser')
|
162
|
+
|
163
|
+
for explanation_p in soup2.select('#body p'):
|
164
|
+
|
165
|
+
explanation = explanation_p.getText()
|
166
|
+
|
167
|
+
if ('歴史' in explanation) or ('【' in explanation):
|
168
|
+
|
169
|
+
continue
|
170
|
+
|
171
|
+
kw.add_explanation(explanation)
|
172
|
+
|
173
|
+
for related_term_a in soup3.select('#body a'):
|
174
|
+
|
175
|
+
related_term = related_term_a.getText()
|
176
|
+
|
177
|
+
if ('歴史' in related_term) or ('地理' in related_term) or ('公民' in related_term) or ('†' in related_term):
|
178
|
+
|
179
|
+
continue
|
180
|
+
|
181
|
+
kw.add_related_terms(related_term)
|
182
|
+
|
183
|
+
|
184
|
+
|
149
185
|
keywords.append(kw)
|
150
186
|
|
151
187
|
|
152
188
|
|
153
|
-
#キーワードの説明のページに遷移しHTMLを取得
|
154
|
-
|
155
|
-
url = keyword_part.get('href')
|
156
|
-
|
157
|
-
driver.get(url)
|
158
|
-
|
159
|
-
sleep(10)
|
160
|
-
|
161
|
-
soup2 = bs4.BeautifulSoup(driver.page_source, 'html.parser')
|
162
|
-
|
163
|
-
soup3 = bs4.BeautifulSoup(driver.page_source, 'html.parser')
|
164
|
-
|
165
|
-
for explanation_p in soup2.select('#body p'):
|
166
|
-
|
167
|
-
explanation = explanation_p.getText()
|
168
|
-
|
169
|
-
if ('歴史' in explanation) or ('【' in explanation):
|
170
|
-
|
171
|
-
continue
|
172
|
-
|
173
|
-
kw.add_explanation(explanation)
|
174
|
-
|
175
|
-
for related_term_a in soup3.select('#body a'):
|
176
|
-
|
177
|
-
related_term = related_term_a.getText()
|
178
|
-
|
179
|
-
if ('歴史' in related_term) or ('地理' in related_term) or ('公民' in related_term) or ('†' in related_term):
|
180
|
-
|
181
|
-
continue
|
182
|
-
|
183
|
-
kw.add_related_terms(related_term)
|
184
|
-
|
185
|
-
|
186
|
-
|
187
189
|
# --- ここからスクレイピング結果を出力するコード ---
|
188
190
|
|
189
191
|
|
@@ -196,7 +198,7 @@
|
|
196
198
|
|
197
199
|
# # 既に用意したファイルがなければ新規ワークブックを作成
|
198
200
|
|
199
|
-
#wb = openpyxl.Workbook()
|
201
|
+
# wb = openpyxl.Workbook()
|
200
202
|
|
201
203
|
|
202
204
|
|
@@ -228,8 +230,6 @@
|
|
228
230
|
|
229
231
|
cursor = 2
|
230
232
|
|
231
|
-
|
232
|
-
|
233
233
|
for keyword in keywords:
|
234
234
|
|
235
235
|
sheet.cell(column = 1, row = cursor, value = keyword.title)
|
@@ -242,16 +242,10 @@
|
|
242
242
|
|
243
243
|
|
244
244
|
|
245
|
-
|
246
|
-
|
247
245
|
# 保存して閉じる
|
248
246
|
|
249
247
|
wb.save('./keyword_ver0.94.xlsx')
|
250
248
|
|
251
249
|
wb.close()
|
252
250
|
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
```
|
251
|
+
```
|
3
書き出しの要件を誤解していたため、修正しました。
test
CHANGED
@@ -230,37 +230,17 @@
|
|
230
230
|
|
231
231
|
|
232
232
|
|
233
|
-
for keyword
|
233
|
+
for keyword in keywords:
|
234
|
-
|
235
|
-
|
234
|
+
|
236
|
-
|
237
|
-
sheet.cell(column = 1, row = cursor
|
235
|
+
sheet.cell(column = 1, row = cursor, value = keyword.title)
|
238
|
-
|
239
|
-
|
236
|
+
|
240
|
-
|
241
|
-
for explanation in keyword_part.explanations:
|
242
|
-
|
243
|
-
|
237
|
+
sheet.cell(column = 2, row = cursor, value = ' '.join(keyword.explanations))
|
238
|
+
|
244
|
-
|
239
|
+
sheet.cell(column = 3, row = cursor, value = ','.join(keyword.related_terms))
|
240
|
+
|
245
|
-
|
241
|
+
cursor += 1
|
246
|
-
|
247
|
-
|
242
|
+
|
248
|
-
|
249
|
-
|
243
|
+
|
250
|
-
|
251
|
-
cursor = start_row
|
252
|
-
|
253
|
-
# related_termの書き込み
|
254
|
-
|
255
|
-
for related_term in keyword_part.related_terms:
|
256
|
-
|
257
|
-
sheet.cell(column = 3, row = cursor, value = related_term)
|
258
|
-
|
259
|
-
cursor += 1
|
260
|
-
|
261
|
-
end_of_related_term = cursor
|
262
|
-
|
263
|
-
cursor = max(end_of_explanation, end_of_related_term)
|
264
244
|
|
265
245
|
|
266
246
|
|
2
不要行修正
test
CHANGED
@@ -138,8 +138,6 @@
|
|
138
138
|
|
139
139
|
title = keyword_part.getText()
|
140
140
|
|
141
|
-
#キーワードのリンクのURLを取得
|
142
|
-
|
143
141
|
if title == '歴史キーワード':
|
144
142
|
|
145
143
|
continue
|
1
インデント
test
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
**[改善案]**
|
2
2
|
|
3
|
-
同一ページにある内容は、
|
3
|
+
同一ページにある内容は、クラスを利用して、ひとまとまりのデータに集めてしまいましょう。
|
4
4
|
|
5
5
|
|
6
6
|
|
@@ -16,7 +16,7 @@
|
|
16
16
|
|
17
17
|
| キーワード
|
18
18
|
|
19
|
-
|
|
19
|
+
| └キーワード文字列(タイトル)
|
20
20
|
|
21
21
|
| └説明1、説明2、説明3・・・
|
22
22
|
|