• ベストアンサー

ソースに表示されない部分があります

coconala(https://coconala.com/requests)というサイトをスクレイピングしたいのですが、明細部分(表示される40件)がソースには表示されないようです。 HTTP CSS などあまり詳しくないのですが、こういうことってあるんでしようか?どうなっているのか教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • ballville
  • ベストアンサー率47% (233/487)
回答No.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

okidsaya555
質問者

お礼

今回は大変勉強になりました。 ご親切に感謝申し上げます。 スッキリしました。 お世話になりました、ありがとうございました。

その他の回答 (4)

  • ballville
  • ベストアンサー率47% (233/487)
回答No.4

>いままで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でコードを書いているのにうまくいかないということでしたら、別途コードを提示した上で質問されるといいと思います。

okidsaya555
質問者

補足

ありがとうございます。 selenium+webdriverでは取得できました。 ただCreateObject("InternetExplorer.Application")ではやはり取得できませんね、できないのではないでしょうか?

  • ballville
  • ベストアンサー率47% (233/487)
回答No.3

ブラウザ上でWebページを開き、見たい要素の部分を右クリックするとメニュー一覧に「検証」に関する項目が出てきます。 それをクリックすれば開発者ツールが開いて、当該部分のHTMLが表示されます。 お尋ねのサイトも特に右クリック禁止のようなことはなかったので、詳細部分のHTMLも見られました。 ただ、この要素は元のソースにあるわけではなく動的に生成しているもののようですので、ソースを読み込んだだけで情報取得できるわけではありません。 そこで、実際にブラウザでアクセスしてとってくれば良い、ということになります。 ブラウザの自動操縦でメジャーなのはselenium+webdriverです。インストール方法は https://www.seleniumqref.com/introduction/webdriver_intro.html を参考にしてください。

okidsaya555
質問者

補足

ありがとうございます。 仰る通り確認できました。 いままでVBAの下記のようなものでやってましたが、元のソースが表示されるだけなんですか? 動的に生成されたものを表示するには、selenium+webdriverが必要ということですか? ------------------------------------------------------------------ CreateObject("InternetExplorer.Application") CreateObject("MSXML2.XMLHTTP")

  • ballville
  • ベストアンサー率47% (233/487)
回答No.2

ブラウザの開発者ツールで検証すると詳細部分のDOMが見えるので、ブラウザを自動操作することでスクレーピング可能だと思います。 webdriverなどをキーワードにして検索すれば情報がたくさん得られるはずです。

okidsaya555
質問者

補足

『詳細部分のDOMが見えるので、ブラウザを自動操作』、すみませんが、もう少し詳しくご説明願います。

  • tkf-
  • ベストアンサー率58% (821/1398)
回答No.1

詳細までは見ていませんが、明細部分は何らかのデータベースから取り込んだ結果を表示しているに過ぎないのではないでしょうか。 データベースへの接続や、クエリの提供、結果の取得は、すべてJavaScriptで処理されていると思われます。 おそらく<script>タグで読み込んでいる外部JavaScript中にDB関連が収められていると思われ、それを解析するしかないのかなと。

関連するQ&A