Ruby版のseleniumを使って下記サイトからデータを取得できたらと思っています。
https://www.athome.co.jp/tochi/tokyo/chiyoda-city/list/
そこで下記のRubyのスクリプトを書いて実行してみましたが、
require 'selenium-webdriver' options = Selenium::WebDriver::Chrome::Options.new options.add_argument('--headless') options.add_argument('--disable-gpu') options.add_argument('--user-agent=Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.63 Safari/537.36') driver = Selenium::WebDriver.for :chrome, options: options url = 'https://www.athome.co.jp/tochi/tokyo/chiyoda-city/list/' driver.get url puts driver.page_source
結果として、期待していたJavaScript実行後の出力ではなく、JavaScriptが実行前の下記のような出力しか得られませんでした。
取得できた出力(JavaScript実行前)
<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head> <meta name="ROBOTS" content="NOINDEX, NOFOLLOW" /> <meta http-equiv="cache-control" content="max-age=0" /> <meta http-equiv="cache-control" content="no-cache" /> <meta http-equiv="expires" content="0" /> <meta http-equiv="expires" content="Tue, 01 Jan 1980 1:00:00 GMT" /> <meta http-equiv="pragma" content="no-cache" /> <meta http-equiv="refresh" content="10; url=/distil_r_captcha.html?requestId=27042986-1ddf-4249-bd39-65ee8c7c7f24&httpReferrer=%2Ftochi%2Ftokyo%2Fchiyoda-city%2Flist%2F" /> <script type="text/javascript"> (function(window){ try { if (typeof sessionStorage !== 'undefined'){ sessionStorage.setItem('distil_referrer', document.referrer); } } catch (e){} })(window); </script> <script type="text/javascript" src="/eadjaxlayqcmrfpn.js" defer=""></script><style type="text/css">#d__fFH{position:absolute;top:-5000px;left:-5000px}#d__fF{font-family:serif;font-size:200px;visibility:hidden}#vvubettawbsvtzescreurufstevtezrzbx{display:none!important}</style></head> <body> <div id="distilIdentificationBlock"> </div> </body></html>
取得したい実行結果(JavaScript実行後)
<!doctype html> <html lang="ja"> <head> <meta charset="utf-8"> <title>千代田区の土地 物件検索結果【アットホーム】|土地購入の情報[売地・宅地・分譲地]</title> <meta name="keywords" content="千代田区 土地,東京都 土地,物件検索結果,土地,売地,宅地,分譲地,購入,情報,検索,探し,athome,アットホーム"> <meta name="description" content="【アットホーム】東京都 千代田区の土地の物件検索結果ページ。土地・不動産の情報サイト アットホームなら、ご希望にぴったりの売地が簡単に検索できます。その他、東京都 千代田区の土地探しに役立つ相場情報など宅地の情報が盛りだくさん。売地のことならアットホームにお任せください。分譲地の情報を毎日更新中。"> <meta name="robots" content="index,follow,noarchive"> <link rel="canonical" href="https://www.athome.co.jp/tochi/tokyo/chiyoda-city/list/"> <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico"> <!-- 長いため途中抜粋 --> </html>
おそらく上記サイトは、JavaScriptが使用されているサイトでJavaScriptが実行される前のソースが取得されている状況だと思うのですが、
JavaScriptが実行された後のデータを取得するにはどのようにしたらよいのでしょうか?
下記サイト等にはdriver.execute_scriptを使うような記載があるのですが、そのような処理を行えばよいのでしょうか?
JavaScriptに詳しくないため、execute_scriptに渡すべき引数がピンとこず試行錯誤しているのですが情報をいただけますでしょうか?
https://morizyun.github.io/web/selenium-cheat-sheet.html
追記
chrome以外にもfirefoxのheadless modeがあると聞いたので、chromeとfirefoxでコマンドラインから下記のコマンドを実行してみました。
-
google-chrome --user-agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.50 Safari/537.36" --no-sandbox --headless --disable-gpu --screenshot="screeshot.png" --width-size=1920,1080 https://www.athome.co.jp/tochi/tokyo/chiyoda-city/list/
-
firefox -headless -screenshot https://www.athome.co.jp/tochi/tokyo/chiyoda-city/list/
その結果、google-chromeは真っ白な画面の一方、firefoxはちゃんとしたscreen shotがとれました。
そのそもコマンドラインでうまく動かなそうなのは問題だと思うのでfirefoxでの実装に切り替えたいと思います。
