DOWNLOADの携帯用ページを順に見ていく(その他は省略)。練習用にselenium-driverを利用した。
準備
- selenium-webdriver
- webdriver-user-agent
- geckodriver をインストールする
手順
ログインする
require 'selenium-webdriver' require 'webdriver-user-agent' # User-AgentをiPhoneにして使う driver = Webdriver::UserAgent.driver(:browser => :firefox, :agent => :iphone) # タイムアウトの時間設定 driver.manage.timeouts.page_load = 30 # ログインページを開く driver.navigate.to "https://.........com/login_......html" # フォームに入力 input_mailtel = driver.find_element(:xpath, "//input[contains(@name,'userno')]") input_mailtel.send_keys(userno) # フォームに入力 input_password = driver.find_element(:xpath, "//input[contains(@name,'password')]") input_password.send_keys(password) # クリックして送る login_button = driver.find_element(:xpath, "//input[contains(@value,'ログイン')]") login_button.click()
順番に画像を見る
# DOWNLOADのページ driver.get("https://.........com/contents/......./sp/download/index.html") # 各月のページのリンクを探す driver.find_elementss(:xpath, "//section[contains(@class,'maincontents')]//li//a").each do |element| # 各月のページのurlを持っておく url = element.attribute('href') # 新しいウィンドウを開く driver.execute_script("window.open()") # 新しいウィンドウのハンドルが得られるまで待つ Selenium::WebDriver::Wait.new(:timeout => 10).until { driver.window_handles.length == 2 } # 元と新規のハンドルを持っておく window_handles = driver.window_handles # フォーカスを移動 driver.switch_to.window(window_handles[1]) # ロードを待つ時間を設定:不要? driver.manage.timeouts.page_load = 30 # 詳細のページに移動 driver.get(url) # iPhone 6やAndroid用の画像があるので、それぞれのリンクを得る driver.find_elements(:xpath, "//section[contains(@class,'maincontents')]//li//a").each do |element_wp| # 何らかの処理 end # 新しいウィンドウを閉じる driver.close # 元のウィンドウにフォーカスを戻す driver.switch_to.window(window_handles[0]) end
補足
driver.action.key_down(:control).click(element).key_up(:control).perform
で新しいタブで開けるが、ロードの待ち方がわからなかったので、新規ウィンドウを開くようにした。ウィンドウをくっつけたいとは思うけど必要ないので放置。
iPhone 6 Plusが一番高画質っぽい。