- 締切済み
動的なページのスクレイピング
動的なページのスクレイピング まず下記のurl御覧ください。 https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q131988243... これで「静的なページの」スクレイピングできるようになったはいいのですが、問題はここからです。 https://sv.j-cg.com/compe/view/entrylist/1489 ↑このような、「ある程度スクロールすると追加でコンテンツが読み込まれるページ」については、正しくスクレイピングできませんでした。 「JavaScriptを実行させて、変化後の要素を取得する」ためにヘッドレスブラウザ(phantomjs)を使っているはずなのに、これは腑に落ちなさすぎるんですが。。 ググったところ、やっぱり「phantomjsを使う」のは正しい解決法のようなんですが、 (これとか→https://ja.stackoverflow.com/questions/19681/nokogiri%E3%81%A7%E5%8...) やっぱり追加後のDOM?については解析できませんでした。 JCGのサイトについてはスクロール時に読み込まれるのはjavascriptの仕様ではないのか、はたまたコードがよくないのか… 教えてください。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- donttalktome
- ベストアンサー率83% (10/12)
回答No.1
実ブラウザ上でスクロールしないと読み込まれないなら ヘッドレスブラウザ上でもスクロールしないと当然ダメです。 phantomjs scrolldown くらいの検索語で調べればコードはすぐわかるでしょう。
お礼
あ、なんか調べたいページが出ちゃってますが… スクレイピング対象は特に気にしないでいただけるとありがたいです
補足
rubyのcapybaraを通してphantomjsを動かしているんですが session.visit "https://sv.j-cg.com/compe/view/entrylist/1489" session.execute_script('window.scroll(0,1000);') や session.visit "https://sv.j-cg.com/compe/view/entrylist/1489" execute_script("window.scrollBy(0, window.innerHeight);") を使ってもスクロールされたデータが取れないので今回質問しました 調べてもrubyでの書き方はわかりません(こういうのhttps://stackoverflow.com/questions/33484890/how-to-access-elements-from-finite-scroll-with-capybara-poltergeist-and-railsを参 考にしても。) 正しい表記法を教えてください。