teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

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

2020/11/05 12:52

投稿

KroYuta
KroYuta

スコア0

title CHANGED
File without changes
body CHANGED
@@ -30,12 +30,15 @@
30
30
  next_page.click()
31
31
  time.sleep(3)
32
32
 
33
- 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"
33
+ #遷移したページのURLを取得
34
+ url_2 = driver.current_url
34
35
 
36
+ #新たな30このデータを取得
35
37
  url_2 = pd.read_html(url_2, header=0)
36
38
  df_2 = data_2[1]
37
39
  ```
38
40
 
41
+ ※実際にはfor文によるループですべてのデータを取得しますが、上記は次のページの分までのみ記載しています。
39
42
  df_2は次のページの30個のデータとなっているべきですが、最初のページの30個のデータのままになってしまっています。
40
43
  自分なりに調べてみましたが、躓いてしまっています。
41
44
  サイトがaspxであることが原因かなとなんとなく推測しているのですが、確証がありません。

1

コードを掲載しました。

2020/11/05 12:52

投稿

KroYuta
KroYuta

スコア0

title CHANGED
File without changes
body CHANGED
@@ -3,4 +3,43 @@
3
3
 
4
4
  https://nucleus.iaea.org/sites/accelerators/Lists/Cyclotron%20Master%20List/cyclotrons_view_2020.aspx
5
5
 
6
- 1ページにつき、30個のデータが表示されるのですが、URLの次のページに遷移した後、そのページの新たな30個のデータを取得しようとすると、一番最初のページのデータが取得されてしまいます。
6
+ 1ページにつき、30個のデータが表示されるのですが、URLの次のページに遷移した後、そのページの新たな30個のデータを取得しようとすると、一番最初のページのデータが取得されてしまいます。
7
+
8
+ 以下のコードでスクレイピングを行っています。
9
+ ```ここに言語を入力
10
+ import pandas as pd
11
+ from selenium import webdriver
12
+ from selenium.webdriver.common.keys import Keys
13
+ from selenium.webdriver.support.ui import Select
14
+ import time
15
+
16
+ driver = webdriver.Chrome('./chromedriver.exe')
17
+ #URLを開く
18
+ driver.get("https://nucleus.iaea.org/sites/accelerators/Lists/Cyclotron%20Master%20List/cyclotrons_view_2020.aspx")
19
+ time.sleep(3)
20
+
21
+ #開いているページのURLを取得
22
+ url = driver.current_url
23
+
24
+ #URL内の表を取得
25
+ data = pd.read_html(url, header=0)
26
+ df = data[1]
27
+
28
+ #seleniumによって、次の30個のデータに遷移
29
+ next_page = driver.find_element_by_id("pagingWPQ2next")
30
+ next_page.click()
31
+ time.sleep(3)
32
+
33
+ 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"
34
+
35
+ url_2 = pd.read_html(url_2, header=0)
36
+ df_2 = data_2[1]
37
+ ```
38
+
39
+ df_2は次のページの30個のデータとなっているべきですが、最初のページの30個のデータのままになってしまっています。
40
+ 自分なりに調べてみましたが、躓いてしまっています。
41
+ サイトがaspxであることが原因かなとなんとなく推測しているのですが、確証がありません。
42
+
43
+ 例示したコードの方法にこだわっているわけではありませんので、他に効果的な方法等ありましたら、ご教示いただけますと幸いです。
44
+
45
+ 何卒よろしくお願いいたします。