ようこそ!浜村拓夫の世界へ

    ブログ内検索

    最近の記事

    ブックマーク数の多い記事

    Blog Translation

    Powered By FC2ブログ

    Powered By FC2ブログ
    ブログやるならFC2ブログ


    FC2ブログ LOGIN

    with Ajax Amazon

    JSONを読み込んで、AJAXページを簡単にスクレイピングする方法

    このエントリーを含むはてなブックマーク はてなブックマーク - JSONを読み込んで、AJAXページを簡単にスクレイピングする方法 あとで読む
    「簡単にできることを複雑にやる必要はない」

    AJAXが使われているWebサイトをスクレイピングするとき、とても簡単な方法があることを教えてもらいました。

    AJAXページをスクレイピングする方法 - 浜村拓夫の世界

    結論から言えば、AJAXがロードしているデータをキャプチャーして、解析すればOKと。

    ・AJAXで授受しているデータは、XMLやJSONの形式が多い。
    ・JSONデータを基にして、HTMLをレンダリング(DOMを構成)している。

    だったら、元ネタのJSONを使って、スクレイピングすれば話が早い!

    発想の転換~久々に目からウロコが落ちるナイスアイデアでした。

    検索エンジン自作入門 ~手を動かしながら見渡す検索の舞台裏
    山田 浩之 / 末永 匡
    技術評論社
    2014-09-25
    ¥ 2,894


    AJAXでやりとりしているデータの形式は、だいたいXMLやJSONだったりするので、案外シンプルな形でスクレイピングを実現できる場合も多く、汎用的な解決方法になりそうです。

    スクレイピング問題の本質は、Webサーバーからのレスポンスを、「どのタイミングで解析するか?」という問題に帰着します。

    AJAX(非同期通信)で、Webサーバーからのレスポンスに着目
    (1) JSONで受け取る。
    (2) JSONを基に、HTMLを組み立てる。
    (3) 最終的なHTMLや、HTMLのDOMを基に、スクレイピングする。
    というステップを踏んでいた。

    スクレイピングは、上記(3)のHTMLやDOMの解析で行うものだ、という決めつけ・固定観念で見てしまっていた。

    でも、AJAXのHTMLは、組み立てている元データがある訳だから、元データのレベルで解析したっていいわけで、わざわざ(2)をやる必要はなかった。


    ●Webサイトのデータ形式
    Webサイトにアクセスするのは、何も人間だけとは限らない。
    機械がアクセスするときは、見た目の装飾なんて関係ない。

    (A) 人間向け → HTML (ブラウザーでやりとり)
    (B) 機械向け → XML、JSON等 (APIでやりとり)

    AJAXのWebページをスクレイピングするとき、サーバーサイドで必要な技術要素は、
    (A)を対象とするなら、Node.js+PhantomJS+CasperJS。
    (B)を対象とするなら、JSONを扱える処理系があれば何でもOK。
    というかんじですね?

    (B)なら、PHPでもOKだわ。
    簡単にスクレイピングできた方がいい。

    とても、参考になりました。
    どうもありがとうござました。
    関連記事

    コメント

    コメントの投稿


    管理者にだけ表示を許可する

    トラックバック

    トラックバックURL:
    http://hamamuratakuo.blog61.fc2.com/tb.php/1191-614ec9e3

    FC2Ad