質問編集履歴
1
コーディングの変更
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
URL内のURLを「次へ」の分だけ
|
1
|
+
URL内のURLを「次へ」の分だけ取得したい
|
test
CHANGED
@@ -4,56 +4,44 @@
|
|
4
4
|
|
5
5
|
取得したURL内にジャンル毎のURLがあり全てを取得したい。
|
6
6
|
|
7
|
-
(ジャンル毎のURL内に「次へ」ボタンがある場合全てのページ分
|
7
|
+
(ジャンル毎のURL内に「次へ」ボタンがある場合全てのページ分)
|
8
8
|
|
9
9
|
```python
|
10
10
|
|
11
|
-
|
11
|
+
#ジャンル毎のURLは取得済みでリストに入っています。
|
12
12
|
|
13
|
-
|
13
|
+
url_list = []
|
14
14
|
|
15
|
-
for i in r
|
15
|
+
for i in url_list:
|
16
16
|
|
17
|
-
|
17
|
+
r = requests.get(i)
|
18
18
|
|
19
|
-
|
19
|
+
soup = BeautifulSoup(r.text)
|
20
20
|
|
21
|
+
get_next = soup.find('li',class_ = ('next'))
|
22
|
+
|
23
|
+
|
24
|
+
|
25
|
+
#1ページのみの場合はNoneが表示される為、複数ページある場合は「次ページ」を取得
|
26
|
+
|
27
|
+
if get_next != None:
|
28
|
+
|
21
|
-
|
29
|
+
next_pages2 = get_next.select('a[href]')
|
30
|
+
|
31
|
+
for next_pages in next_pages2:
|
32
|
+
|
33
|
+
next_page = 'https://----' + n_pages.get('href')
|
34
|
+
|
35
|
+
print(n_page)
|
36
|
+
|
37
|
+
|
22
38
|
|
23
39
|
```
|
24
40
|
|
25
41
|
####問題点
|
26
42
|
|
27
|
-
・ジ
|
43
|
+
・このコーディングだと複数ページある場合は、2ページ目のみを取得になっている為、全ページにしたい。
|
28
44
|
|
29
|
-
|
45
|
+
####試した事
|
30
46
|
|
31
|
-
|
32
|
-
|
33
|
-
上記の場合、2〜9ページのURLを開いても「404 NOT FOUND」の表示がされる。
|
34
|
-
|
35
|
-
(「次へ」が2回あり計3ページの場合、4〜9が「404 NOT FOUND」)
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
・とりあえずはrange関数の終止点を10(9ページ目)にしているが
|
42
|
-
|
43
|
-
10ページ以上「次へ」がある場合にスクレイピングされない。
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
上記の場合、終止点を1000など「次へ」ボタンが無いであろう数まで設定
|
48
|
-
|
49
|
-
しておけば解決するが数ページしかない場合PCが重くなる
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
####解決したい方法
|
54
|
-
|
55
|
-
・range関数の終止点をとりあえず1000などにしてif文で「404 NOT FOUND」の場合は
|
56
|
-
|
57
|
-
リストに追加しないようにする。
|
58
|
-
|
59
|
-
・
|
47
|
+
・ifの箇所をwhile文に変更した。←1ページ目の「次へ」から2ページ目を取得。2ページ目の「次へ」から3ページ目を取得。を繰り返して欲しいのに、1ページ目の「次へ」から2ページ目を取得を無限ループしてしまう。
|