- ベストアンサー
ソースに表示されない部分があります
coconala(https://coconala.com/requests)というサイトをスクレイピングしたいのですが、明細部分(表示される40件)がソースには表示されないようです。 HTTP CSS などあまり詳しくないのですが、こういうことってあるんでしようか?どうなっているのか教えてください。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
たとえば次のvbs(VBAでなくてすいません。今、オフィスが使える環境にないもので)で、求人の全タイトルを取得できます。 dim ie,itemtitles,itemtitle,sha,win set ie= CreateObject("InternetExplorer.application") ie.navigate("https://coconala.com/requests") Do if not ( ie.busy ) and ( ie.readystate=4 ) then exit do end if Loop ie.visible=true WScript.Sleep 3000 for each itemtitle in ie.document.getELementsByClassName( "c-itemInfo_title" ) msgbox(itemtitle.innerText) next
その他の回答 (4)
- ballville
- ベストアンサー率47% (233/487)
>いままでVBAの下記のようなものでやってましたが、元のソースが表示されるだけなんですか? >動的に生成されたものを表示するには、selenium+webdriverが必要ということですか? >CreateObject("InternetExplorer.Application") >CreateObject("MSXML2.XMLHTTP") CreateObject("InternetExplorer.Application")のほうはIE(=ブラウザ)なので、動的に生成されたものも扱えます。 MSXML2.XMLHTTPは、相手側とのセッションをすべて再現してやらないといけないので大変です。 seleniumのサイトをたどると、IE用のwebdriverも見つかると思いますが、IEの場合はcom操作のほうが簡単(VBS、VBAなどで扱える)ですのでseleniumを勉強しなくても済むでしょう。 document.getElementsByほにゃらら系メソッドで、動的に生成されたDOMにもアクセスできます。 もしVBAでコードを書いているのにうまくいかないということでしたら、別途コードを提示した上で質問されるといいと思います。
補足
ありがとうございます。 selenium+webdriverでは取得できました。 ただCreateObject("InternetExplorer.Application")ではやはり取得できませんね、できないのではないでしょうか?
- ballville
- ベストアンサー率47% (233/487)
ブラウザ上でWebページを開き、見たい要素の部分を右クリックするとメニュー一覧に「検証」に関する項目が出てきます。 それをクリックすれば開発者ツールが開いて、当該部分のHTMLが表示されます。 お尋ねのサイトも特に右クリック禁止のようなことはなかったので、詳細部分のHTMLも見られました。 ただ、この要素は元のソースにあるわけではなく動的に生成しているもののようですので、ソースを読み込んだだけで情報取得できるわけではありません。 そこで、実際にブラウザでアクセスしてとってくれば良い、ということになります。 ブラウザの自動操縦でメジャーなのはselenium+webdriverです。インストール方法は https://www.seleniumqref.com/introduction/webdriver_intro.html を参考にしてください。
補足
ありがとうございます。 仰る通り確認できました。 いままでVBAの下記のようなものでやってましたが、元のソースが表示されるだけなんですか? 動的に生成されたものを表示するには、selenium+webdriverが必要ということですか? ------------------------------------------------------------------ CreateObject("InternetExplorer.Application") CreateObject("MSXML2.XMLHTTP")
- ballville
- ベストアンサー率47% (233/487)
ブラウザの開発者ツールで検証すると詳細部分のDOMが見えるので、ブラウザを自動操作することでスクレーピング可能だと思います。 webdriverなどをキーワードにして検索すれば情報がたくさん得られるはずです。
補足
『詳細部分のDOMが見えるので、ブラウザを自動操作』、すみませんが、もう少し詳しくご説明願います。
- tkf-
- ベストアンサー率58% (821/1398)
詳細までは見ていませんが、明細部分は何らかのデータベースから取り込んだ結果を表示しているに過ぎないのではないでしょうか。 データベースへの接続や、クエリの提供、結果の取得は、すべてJavaScriptで処理されていると思われます。 おそらく<script>タグで読み込んでいる外部JavaScript中にDB関連が収められていると思われ、それを解析するしかないのかなと。
お礼
今回は大変勉強になりました。 ご親切に感謝申し上げます。 スッキリしました。 お世話になりました、ありがとうございました。