質問編集履歴
3
実現したいことの修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
|
4
4
|
|
5
|
-
python3の初学者です。python3を用いて簡易的なスクレイピングのアプリを作成しています。現在は、ブラウザ上でビューファイルは問題なく表示され、urlを用いたスクレイピングも行えています。しかし、例外のurlで抽出すると、(IndexError: list index out of range)が発生するため、例外時にエラーメッセージを表示させたいのですが、表示されなくて困っております。
|
5
|
+
python3の初学者です。python3を用いて簡易的なスクレイピングのアプリを作成しています。現在は、ブラウザ上でビューファイルは問題なく表示され、urlを用いたスクレイピングも行えています。しかし、例外のurlで抽出すると、(IndexError: list index out of range)が発生するため、例外時に画面上にフォームエラーのメッセージを表示させたいのですが、表示されなくて困っております。
|
6
6
|
|
7
7
|
|
8
8
|
|
2
ディレクトリとファイル構成のGyazoを添付しました
test
CHANGED
File without changes
|
test
CHANGED
@@ -263,3 +263,9 @@
|
|
263
263
|
requests 2.25.1
|
264
264
|
|
265
265
|
beautifulsoup4 4.9.3
|
266
|
+
|
267
|
+
|
268
|
+
|
269
|
+
ディレクトリとファイルの構成
|
270
|
+
|
271
|
+
https://gyazo.com/434a1275b9db6c0e147dd6c18fd1b1c1
|
1
view.pyのコードを追記しました
test
CHANGED
File without changes
|
test
CHANGED
@@ -172,6 +172,70 @@
|
|
172
172
|
|
173
173
|
```
|
174
174
|
|
175
|
+
view.pyのコード
|
176
|
+
|
177
|
+
```python
|
178
|
+
|
179
|
+
from django.shortcuts import render
|
180
|
+
|
181
|
+
from .models import News
|
182
|
+
|
183
|
+
from django.views.generic import CreateView
|
184
|
+
|
185
|
+
from django.urls import reverse_lazy
|
186
|
+
|
187
|
+
import urllib.request
|
188
|
+
|
189
|
+
import requests
|
190
|
+
|
191
|
+
from bs4 import BeautifulSoup
|
192
|
+
|
193
|
+
|
194
|
+
|
195
|
+
|
196
|
+
|
197
|
+
class Create(CreateView):
|
198
|
+
|
199
|
+
template_name = 'home.html'
|
200
|
+
|
201
|
+
model = News
|
202
|
+
|
203
|
+
fields = ('url',)
|
204
|
+
|
205
|
+
success_url = reverse_lazy('list')
|
206
|
+
|
207
|
+
|
208
|
+
|
209
|
+
|
210
|
+
|
211
|
+
def listfunc(request):
|
212
|
+
|
213
|
+
for post in News.objects.all():
|
214
|
+
|
215
|
+
url = post.url
|
216
|
+
|
217
|
+
list = []
|
218
|
+
|
219
|
+
response = requests.get(url)
|
220
|
+
|
221
|
+
bs = BeautifulSoup(response.text, "html.parser")
|
222
|
+
|
223
|
+
ul_tag = bs.find_all(class_="yjnSubTopics_list")
|
224
|
+
|
225
|
+
for tag in ul_tag[0]:
|
226
|
+
|
227
|
+
title = tag.a.getText()
|
228
|
+
|
229
|
+
url2 = tag.a.get("href")
|
230
|
+
|
231
|
+
list.append([title, url2])
|
232
|
+
|
233
|
+
context = {'list': list,}
|
234
|
+
|
235
|
+
return render(request, 'list.html', context)
|
236
|
+
|
237
|
+
```
|
238
|
+
|
175
239
|
|
176
240
|
|
177
241
|
### 試したこと
|