質問編集履歴

2

コードの修正をしました。

2020/11/05 12:52

投稿

KroYuta
KroYuta

スコア0

test CHANGED
File without changes
test CHANGED
@@ -62,9 +62,13 @@
62
62
 
63
63
 
64
64
 
65
- url_2 = "https://nucleus.iaea.org/sites/accelerators/Lists/Cyclotron%20Master%20List/cyclotrons_view_2020.aspx#InplviewHashb4c61c57-92e3-4919-885c-7bc3bba78de7=Paged%3DTRUE-p_ID%3D31-PageFirstRow%3D31"
65
+ #遷移したページのURLを取得
66
+
67
+ url_2 = driver.current_url
66
68
 
67
69
 
70
+
71
+ #新たな30このデータを取得
68
72
 
69
73
  url_2 = pd.read_html(url_2, header=0)
70
74
 
@@ -73,6 +77,8 @@
73
77
  ```
74
78
 
75
79
 
80
+
81
+ ※実際にはfor文によるループですべてのデータを取得しますが、上記は次のページの分までのみ記載しています。
76
82
 
77
83
  df_2は次のページの30個のデータとなっているべきですが、最初のページの30個のデータのままになってしまっています。
78
84
 

1

コードを掲載しました。

2020/11/05 12:52

投稿

KroYuta
KroYuta

スコア0

test CHANGED
File without changes
test CHANGED
@@ -9,3 +9,81 @@
9
9
 
10
10
 
11
11
  1ページにつき、30個のデータが表示されるのですが、URLの次のページに遷移した後、そのページの新たな30個のデータを取得しようとすると、一番最初のページのデータが取得されてしまいます。
12
+
13
+
14
+
15
+ 以下のコードでスクレイピングを行っています。
16
+
17
+ ```ここに言語を入力
18
+
19
+ import pandas as pd
20
+
21
+ from selenium import webdriver
22
+
23
+ from selenium.webdriver.common.keys import Keys
24
+
25
+ from selenium.webdriver.support.ui import Select
26
+
27
+ import time
28
+
29
+
30
+
31
+ driver = webdriver.Chrome('./chromedriver.exe')
32
+
33
+ #URLを開く
34
+
35
+ driver.get("https://nucleus.iaea.org/sites/accelerators/Lists/Cyclotron%20Master%20List/cyclotrons_view_2020.aspx")
36
+
37
+ time.sleep(3)
38
+
39
+
40
+
41
+ #開いているページのURLを取得
42
+
43
+ url = driver.current_url
44
+
45
+
46
+
47
+ #URL内の表を取得
48
+
49
+ data = pd.read_html(url, header=0)
50
+
51
+ df = data[1]
52
+
53
+
54
+
55
+ #seleniumによって、次の30個のデータに遷移
56
+
57
+ next_page = driver.find_element_by_id("pagingWPQ2next")
58
+
59
+ next_page.click()
60
+
61
+ time.sleep(3)
62
+
63
+
64
+
65
+ url_2 = "https://nucleus.iaea.org/sites/accelerators/Lists/Cyclotron%20Master%20List/cyclotrons_view_2020.aspx#InplviewHashb4c61c57-92e3-4919-885c-7bc3bba78de7=Paged%3DTRUE-p_ID%3D31-PageFirstRow%3D31"
66
+
67
+
68
+
69
+ url_2 = pd.read_html(url_2, header=0)
70
+
71
+ df_2 = data_2[1]
72
+
73
+ ```
74
+
75
+
76
+
77
+ df_2は次のページの30個のデータとなっているべきですが、最初のページの30個のデータのままになってしまっています。
78
+
79
+ 自分なりに調べてみましたが、躓いてしまっています。
80
+
81
+ サイトがaspxであることが原因かなとなんとなく推測しているのですが、確証がありません。
82
+
83
+
84
+
85
+ 例示したコードの方法にこだわっているわけではありませんので、他に効果的な方法等ありましたら、ご教示いただけますと幸いです。
86
+
87
+
88
+
89
+ 何卒よろしくお願いいたします。