いつもお世話になっています。
表題の通り、下記のURLに記載のデータをスクレイピング(自動取得)したく、pythonでコードを作成しています。
1ページにつき、30個のデータが表示されるのですが、URLの次のページに遷移した後、そのページの新たな30個のデータを取得しようとすると、一番最初のページのデータが取得されてしまいます。
以下のコードでスクレイピングを行っています。
import pandas as pd from selenium import webdriver from selenium.webdriver.common.keys import Keys from selenium.webdriver.support.ui import Select import time driver = webdriver.Chrome('./chromedriver.exe') #URLを開く driver.get("https://nucleus.iaea.org/sites/accelerators/Lists/Cyclotron%20Master%20List/cyclotrons_view_2020.aspx") time.sleep(3) #開いているページのURLを取得 url = driver.current_url #URL内の表を取得 data = pd.read_html(url, header=0) df = data[1] #seleniumによって、次の30個のデータに遷移 next_page = driver.find_element_by_id("pagingWPQ2next") next_page.click() time.sleep(3) #遷移したページのURLを取得 url_2 = driver.current_url #新たな30このデータを取得 url_2 = pd.read_html(url_2, header=0) df_2 = data_2[1]
※実際にはfor文によるループですべてのデータを取得しますが、上記は次のページの分までのみ記載しています。
df_2は次のページの30個のデータとなっているべきですが、最初のページの30個のデータのままになってしまっています。
自分なりに調べてみましたが、躓いてしまっています。
サイトがaspxであることが原因かなとなんとなく推測しているのですが、確証がありません。
例示したコードの方法にこだわっているわけではありませんので、他に効果的な方法等ありましたら、ご教示いただけますと幸いです。
何卒よろしくお願いいたします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。