45分で理解する




           WEBクローリング入門

           オフィスサイトウ 斉藤之雄
               www.fxfrog.com
              Twitter @yukio_saitoh


                                不許複製   2012/07/02

                                                    1
インデックス
•   Web基本技術(リソース識別子、プロトコル)
•   リソース識別子の種類:URI, URL, URN
•   Webサーバと通信(実習:コマンドプロンプト使用)
•   HTMLドキュメントと Cookie
•   検索エンジンの一般構造と利用動向
•   検索エンジンの対象(パブリック、プライベート)
•   自動巡回、スパイダー(クローラ)、スクレーピングの制御
•   クローラ情報の格納(リンク、ドキュメント)
•   プライベート検索エンジンの高精度化アプローチ(重み付け)
•   ※SEO 一般解釈と誤解釈
•   まとめ
•   参考文献一覧




    ※SEO / Search Engine Optimization 検索エンジン最適化
                                                  2
WEB基本技術
    (リソース識別子、プロトコル)
•   World Wide Web はリソース、リソース識別子(転送)、プロトコルで構成される
    リソース:コンテンツなどの情報資源
      例:HTMLドキュメント、JPEG画像、WMV動画、XML構成ファイル等

    リソース識別子:特定のリソースにアクセスする構文で指示する
                       次のスライドで解説する

    プロトコル:Webユーザーエージェント(Webブラウザ) と Webサーバが通信するため
          の基本的仕様
    例: HTTP (Hyper Text Transfer Protocol), FTP (File Transfer Protocol) 等




     リソース識別子 cf.) RFC.1630, 2396
                                                                             3
リソース識別子の種類:URI, URL, URN
•   リソース識別子の種類:URI, URL, URN

    URI (Uniform Resource Identifier):アイデンティティを持つものへ参照先アンカーと
    して定義。URI には、2つの識別子 URL, URN が含まれ、7ビット ASCII エンコー
    ド文字列としている


    URL (Uniform Resource Locator):参照先を定義
    例:http://www.fxfrog.com/
        http://www.fxfrog.com/index.php
    (コロンの前はプロトコル名、
      ダブルスラッシュ・ブロックはホストおよびドメイン名で定義され
      最初のスラッシュは絶対パス名、リソースは index.php である)


    URN (Uniform Resource Name):参照先に対する一意の名前
    例:FX FROG | オフィスサイトウ 公式ブログ




    メモ:HTTPサーバのことを Webサーバとも言う
                                                           4
WEBサーバと通信
(実習:コマンドプロンプト使用)

•   HTTP は要求応答型の通信手順なのでコマンドプロンプトからWEBサーバと
    通信を行う(Proxy / Cache サーバを使用しなければならない環境を除く)




    > telnet www.yahoo.co.jp 80 ・・・ www.yahoo.co.jp へ TCP#80 で接続要求
    GET http://www.yahoo.co.jp/ HTTP/1.1 ・・・ HTTP/1.1 でGET メソッド使用 5
    Host: www.yahoo.co.jp ・・・ ユーザーエージェントからの通信要求終わり
HTMLドキュメントと COOKIE
•   実習で入手した HTML ドキュメントは多数の URI が記述されていることに
    気付く
•   Webブラウザから参照すれば再訪かどうかのチェックがWebサーバ側で行われ、
    再訪導線を提示することがある。しかし、HTML ドキュメントそのものには再訪
    を示す情報は見えないようになっている
•   Webサーバが瞬時にアクセスログを集計し、アクセス元 IP アドレス単位で再訪
    かどうかを識別していた場合、 NAT(※) 等で複数端末が1つの IP アドレスを
    共有している環境では新規来訪と再訪の区別が出来ないだけでなく、何らかの
    属性情報を持つ端末からのアクセスであることを識別できない
•   商用 Webサーバで広範囲に Webブラウザへ対して Cookie (クッキー)を
    使用することで、膨大なアクセスログを瞬時に分析しなくても信頼のできる
    独自識別子に置き換えて新規来訪、再訪の区別を容易にし、さらには
    ユーザ識別することでページリクエストの質向上に役立てている
•   本書ではクッキー取得とクッキー代理返答を伴わないクローリングの基礎まで
    に留めたい



    ※ NAT Network Address Translation / ネットワークアドレス変換
                                                       6
検索エンジンの一般構造と利用動向
•   検索エンジンは一般化し且つ商用利用も実用化しており、自動クローリングに
    よってリソース(コンテンツなどの情報資源)を自動ダウンロードし、内部に
    蓄積され、検索アルゴリズムによって索引付けが行われる
•   自動クローリングする際に、情報検索および機械学習によってクローラ制御が
    行われ、索引付けにはスコアリング(または重み付け)手法が一般的である
•   検索エンジンとして身近なデータベースでも、ドキュメント集合の索引化
    (インデックス化)、カテゴリ化、分類化、階層化といった構造化データを持
    たせることで、検索文字列に対する柔軟な逆引き索引を実現している
•   検索エンジン利用者は検索フォームへ、検索したい文言文字列や相関しそうな
    文言を入力することで、その結果を得ている。しかし前述した自動クローリン
    グによっては、まだ収集される以前や陳腐化したものであったり、不正確な記
    述によるリソースがもたらす混乱を受けることが有り得る




    メモ:検索エンジンには検索コマンドが提供されている。これは検索
    対象をフィルタリングして高精度な検索結果を試みる手法である     7
検索エンジンの対象
(パブリック、プライベート)

•   検索エンジンは Yahoo!, Google, Bing!, Baidu といったインターネットパブリッ
    ク用と Namazu, Fast (Search Server by Microsoft) 等のプライベート用がある
•   パブリック用ではインターネットからの来訪流入を期待するために、検索
    エンジンのクローラが解釈しやすい記述を行うのが一般的であり、これを
    広く SEO 基礎として採用している組織が多い
•   プライベート用ではイントラネットに分散する各種リソース(個人、部内、
    社内、関係先)の管理が煩雑となりやすいため、社内文章検索エンジンと
    して導入する企業は珍しいものではなくなった。そのため、検索対象は何
    でどこまでの範囲(対象とスコープ)とするか留意する
    → 機密文章(パスワードリストや個人情報、経営情報)は対象外など
•   対外顧客向け FAQ やコーポレイトサイトでも、検索フォームを設置し来訪
    者へ対する誘導を強化付けつつ、その検索文言を分析することでどんな
    コンテンツを必要とされているのか、どこで離脱するかといったWeb施策
    に役立てることも常識となりつつある

    メモ:CRMツールだけに依存するのではなく、Webであればサイト内
    検索文言とコンテンツマッチ精度の向上、直帰ページをなくすことも、                             8
    顧客満足度が向上する一因である
自動巡回、スパイダー(クローラ)、
 スクレーピングの制御
 •   検索エンジンの設計方法は多様化しているが、もっとも多数の利用者を
     対象とした標準的なWebアクセス結果や特定のドキュメントに特化した
     クローラが好ましい
 •   検索エンジンの性能については、世の中に存在する Webページのすべてを
     対象とした被覆率(Coverage), 最新率(Recency)を重要指標として示す海外
     文献(※)があったが、複数の既存検索エンジンに対して同時に問い合わ
     せた結果を統合的にWeb, 画像, 動画, ニュース 検索結果を応答するために
     合理的なクローラ制御が行われている
 •   一般的な作法としてWebサイトの絶対パス上に robots.txt でクローラ条件を
     明示的に示された以外の取得は行わないようになっている。またHTMLド
     キュメント内METAタグでもキャッシュしないように記述も行えるが、
     残念ながら下品なクローラはそれらの要請を無視してリソース取得する
 •   Webクローリングを行う際は研究目的であっても許可されていないリソー
     ス取得は行わないことが求められる



※Searching the World Wide Web / Steve Lawrence, C. Lee Giles著 - 10 February 1998
 http://www.sciencemag.org/content/280/5360/98.abstract                            9
クローラ情報の格納
(リンク、ドキュメント)

•   クローラは何らかのアルゴリズムに基いて動作するエージェントプログラムで
    あると考え、本スライド P.7 で触れた「機械学習」による予測を伴う
    無駄な情報収集するのを極小化するため、「強化学習」として得られる
    報酬の期待値を長期間に最大とする学習ポリシを保有するものが多い。

    →  対象とするリソースが多ければ多いほど学習効果は高くなり、
     情報精度も高くなる。対象がドキュメントであればその傾向は高い
    (SEO 施策を意識したサイトリニューアルを図る際は特に留意したい)

    そのため、アンカーリンクとバックリンクに伴う URN が関連性を有するか、利
    用者の自然言語による逆引き検索文言をシソーラスもまたポリシに取り込み、
    抽出項目を決定し学習ポリシのもと収集する
•   クローラからの情報をデータベースへ格納する際に、構造化データ、ドキュメ
    ント以外非構造化データに分類したうえで登録する。最近はデータベースでは
    なくストレージテーブルへ直接書き込む手法も見出されており、膨大なデータ
    から高速に逆引き検索要求が高まっているといえる




                                          10
プライベート検索エンジンの高精度化
アプローチ(重み付け)
•   プライベート検索エンジンについては、本スライド P.8 で軽く紹介したが
    実際の運用では、タイトルを本文より高い重み(優先度)を持たせたい
    要望があるだろう。それに対応するのが重み付け登録である
•   一般的な検索エンジンの初期アプローチでは、本文内で使用される文言の
    頻出度(出現数)を全体平均的と比較して表示順位とすることがある。

    2回目以降の検索では実際にクリックされた回数をも表示順位要因とする
    ことがあるが、重み付けによってプライベートサイトでは【新商品に関す
    る情報リソース】,【総務手続き文書】を常に最上位表示できる
•   検索で見つけやすい効果的な表示をプライベートで実現する方法であるが、
    パブリックサイトでは SEO や SEM (※) 努力が求められる




    ※SEM Search Engine Marketing / 検索サイトへ有償マーケティングにより
    自社サイトへの導線を行うマーケティング手法またはその行為                        11
※SEO 一般解釈と誤解釈

以下内容は SEO 都市伝説?
•   バックリンク(外部からのアンカーリンク)が多いほど検索サイトから最上位
    表示へ好結果をもたらす
•   コンテンツが多いほど検索サイトへ多数登録され、インデックスが多数生成さ
    れる
•   ページランクが高いソーシャルメディアにページを設けたり、いわゆる
    公式サイトへ多数メディア露出することで検索サイトに有利である
•   HTML-Lint 等の文法チェックで好成績でなければならない
•   クローラを多数呼び寄せるために、Webサイトの広帯域環境が必要である
•   HTML のみならず XML でも記述したサイトマップ設置が必須である
•   IIS より Apache はメジャークローラとの通信には最適である
•   独自クローラで集めたコンテンツからアフィリエイトサイトを作り、さらに
    SEO強化を図ることでマネタイズモデルが実現する


    他にも SEO 都市伝説はあります。ページランクを絶対指標とする
    コストだけ発生する危険なバックリンク業者も存在します            12
まとめ
•   Web クローラは何故存在するのか
•   検索エンジンの一般構造
•   パブリック(インターネット)、プライベート検索サイトの違い




今回言及しなかった内容に、クローラ頻度・速度(帯域課題)、Cookie あるい
は基本認証を伴うクローリング技術とその利用例がある。これらは 45分で理解
するには困難が伴うため割愛した




                                      13
参考文献一覧
:コメント入り
•   確立モデルによる Webデータ解析法
    Pierre Baldi/Paolo Frasconi/Padhraic Smyth (著),
    水田 正弘/南 弘征/小宮 由里子 (翻訳)著 ¥6,000
    :ゼミ生、大学院生、実務者向けの教科書、良書である

•   Java ネットワーク プログラミング 基礎からわかる 完全入門
    永嶋 浩著 ¥2,580
    :クローラの作成方法は掲載されていないが一部参考にした




    メモ:上記いずれも公立産業技術大学院大学図書館                       蔵書
                                                       14

45分で理解する webクローリング入門 斉藤之雄

  • 1.
    45分で理解する WEBクローリング入門 オフィスサイトウ 斉藤之雄 www.fxfrog.com Twitter @yukio_saitoh 不許複製 2012/07/02 1
  • 2.
    インデックス • Web基本技術(リソース識別子、プロトコル) • リソース識別子の種類:URI, URL, URN • Webサーバと通信(実習:コマンドプロンプト使用) • HTMLドキュメントと Cookie • 検索エンジンの一般構造と利用動向 • 検索エンジンの対象(パブリック、プライベート) • 自動巡回、スパイダー(クローラ)、スクレーピングの制御 • クローラ情報の格納(リンク、ドキュメント) • プライベート検索エンジンの高精度化アプローチ(重み付け) • ※SEO 一般解釈と誤解釈 • まとめ • 参考文献一覧 ※SEO / Search Engine Optimization 検索エンジン最適化 2
  • 3.
    WEB基本技術 (リソース識別子、プロトコル) • World Wide Web はリソース、リソース識別子(転送)、プロトコルで構成される リソース:コンテンツなどの情報資源 例:HTMLドキュメント、JPEG画像、WMV動画、XML構成ファイル等 リソース識別子:特定のリソースにアクセスする構文で指示する 次のスライドで解説する プロトコル:Webユーザーエージェント(Webブラウザ) と Webサーバが通信するため の基本的仕様 例: HTTP (Hyper Text Transfer Protocol), FTP (File Transfer Protocol) 等 リソース識別子 cf.) RFC.1630, 2396 3
  • 4.
    リソース識別子の種類:URI, URL, URN • リソース識別子の種類:URI, URL, URN URI (Uniform Resource Identifier):アイデンティティを持つものへ参照先アンカーと して定義。URI には、2つの識別子 URL, URN が含まれ、7ビット ASCII エンコー ド文字列としている URL (Uniform Resource Locator):参照先を定義 例:http://www.fxfrog.com/ http://www.fxfrog.com/index.php (コロンの前はプロトコル名、 ダブルスラッシュ・ブロックはホストおよびドメイン名で定義され 最初のスラッシュは絶対パス名、リソースは index.php である) URN (Uniform Resource Name):参照先に対する一意の名前 例:FX FROG | オフィスサイトウ 公式ブログ メモ:HTTPサーバのことを Webサーバとも言う 4
  • 5.
    WEBサーバと通信 (実習:コマンドプロンプト使用) • HTTP は要求応答型の通信手順なのでコマンドプロンプトからWEBサーバと 通信を行う(Proxy / Cache サーバを使用しなければならない環境を除く) > telnet www.yahoo.co.jp 80 ・・・ www.yahoo.co.jp へ TCP#80 で接続要求 GET http://www.yahoo.co.jp/ HTTP/1.1 ・・・ HTTP/1.1 でGET メソッド使用 5 Host: www.yahoo.co.jp ・・・ ユーザーエージェントからの通信要求終わり
  • 6.
    HTMLドキュメントと COOKIE • 実習で入手した HTML ドキュメントは多数の URI が記述されていることに 気付く • Webブラウザから参照すれば再訪かどうかのチェックがWebサーバ側で行われ、 再訪導線を提示することがある。しかし、HTML ドキュメントそのものには再訪 を示す情報は見えないようになっている • Webサーバが瞬時にアクセスログを集計し、アクセス元 IP アドレス単位で再訪 かどうかを識別していた場合、 NAT(※) 等で複数端末が1つの IP アドレスを 共有している環境では新規来訪と再訪の区別が出来ないだけでなく、何らかの 属性情報を持つ端末からのアクセスであることを識別できない • 商用 Webサーバで広範囲に Webブラウザへ対して Cookie (クッキー)を 使用することで、膨大なアクセスログを瞬時に分析しなくても信頼のできる 独自識別子に置き換えて新規来訪、再訪の区別を容易にし、さらには ユーザ識別することでページリクエストの質向上に役立てている • 本書ではクッキー取得とクッキー代理返答を伴わないクローリングの基礎まで に留めたい ※ NAT Network Address Translation / ネットワークアドレス変換 6
  • 7.
    検索エンジンの一般構造と利用動向 • 検索エンジンは一般化し且つ商用利用も実用化しており、自動クローリングに よってリソース(コンテンツなどの情報資源)を自動ダウンロードし、内部に 蓄積され、検索アルゴリズムによって索引付けが行われる • 自動クローリングする際に、情報検索および機械学習によってクローラ制御が 行われ、索引付けにはスコアリング(または重み付け)手法が一般的である • 検索エンジンとして身近なデータベースでも、ドキュメント集合の索引化 (インデックス化)、カテゴリ化、分類化、階層化といった構造化データを持 たせることで、検索文字列に対する柔軟な逆引き索引を実現している • 検索エンジン利用者は検索フォームへ、検索したい文言文字列や相関しそうな 文言を入力することで、その結果を得ている。しかし前述した自動クローリン グによっては、まだ収集される以前や陳腐化したものであったり、不正確な記 述によるリソースがもたらす混乱を受けることが有り得る メモ:検索エンジンには検索コマンドが提供されている。これは検索 対象をフィルタリングして高精度な検索結果を試みる手法である 7
  • 8.
    検索エンジンの対象 (パブリック、プライベート) • 検索エンジンは Yahoo!, Google, Bing!, Baidu といったインターネットパブリッ ク用と Namazu, Fast (Search Server by Microsoft) 等のプライベート用がある • パブリック用ではインターネットからの来訪流入を期待するために、検索 エンジンのクローラが解釈しやすい記述を行うのが一般的であり、これを 広く SEO 基礎として採用している組織が多い • プライベート用ではイントラネットに分散する各種リソース(個人、部内、 社内、関係先)の管理が煩雑となりやすいため、社内文章検索エンジンと して導入する企業は珍しいものではなくなった。そのため、検索対象は何 でどこまでの範囲(対象とスコープ)とするか留意する → 機密文章(パスワードリストや個人情報、経営情報)は対象外など • 対外顧客向け FAQ やコーポレイトサイトでも、検索フォームを設置し来訪 者へ対する誘導を強化付けつつ、その検索文言を分析することでどんな コンテンツを必要とされているのか、どこで離脱するかといったWeb施策 に役立てることも常識となりつつある メモ:CRMツールだけに依存するのではなく、Webであればサイト内 検索文言とコンテンツマッチ精度の向上、直帰ページをなくすことも、 8 顧客満足度が向上する一因である
  • 9.
    自動巡回、スパイダー(クローラ)、 スクレーピングの制御 • 検索エンジンの設計方法は多様化しているが、もっとも多数の利用者を 対象とした標準的なWebアクセス結果や特定のドキュメントに特化した クローラが好ましい • 検索エンジンの性能については、世の中に存在する Webページのすべてを 対象とした被覆率(Coverage), 最新率(Recency)を重要指標として示す海外 文献(※)があったが、複数の既存検索エンジンに対して同時に問い合わ せた結果を統合的にWeb, 画像, 動画, ニュース 検索結果を応答するために 合理的なクローラ制御が行われている • 一般的な作法としてWebサイトの絶対パス上に robots.txt でクローラ条件を 明示的に示された以外の取得は行わないようになっている。またHTMLド キュメント内METAタグでもキャッシュしないように記述も行えるが、 残念ながら下品なクローラはそれらの要請を無視してリソース取得する • Webクローリングを行う際は研究目的であっても許可されていないリソー ス取得は行わないことが求められる ※Searching the World Wide Web / Steve Lawrence, C. Lee Giles著 - 10 February 1998 http://www.sciencemag.org/content/280/5360/98.abstract 9
  • 10.
    クローラ情報の格納 (リンク、ドキュメント) • クローラは何らかのアルゴリズムに基いて動作するエージェントプログラムで あると考え、本スライド P.7 で触れた「機械学習」による予測を伴う 無駄な情報収集するのを極小化するため、「強化学習」として得られる 報酬の期待値を長期間に最大とする学習ポリシを保有するものが多い。 → 対象とするリソースが多ければ多いほど学習効果は高くなり、 情報精度も高くなる。対象がドキュメントであればその傾向は高い (SEO 施策を意識したサイトリニューアルを図る際は特に留意したい) そのため、アンカーリンクとバックリンクに伴う URN が関連性を有するか、利 用者の自然言語による逆引き検索文言をシソーラスもまたポリシに取り込み、 抽出項目を決定し学習ポリシのもと収集する • クローラからの情報をデータベースへ格納する際に、構造化データ、ドキュメ ント以外非構造化データに分類したうえで登録する。最近はデータベースでは なくストレージテーブルへ直接書き込む手法も見出されており、膨大なデータ から高速に逆引き検索要求が高まっているといえる 10
  • 11.
    プライベート検索エンジンの高精度化 アプローチ(重み付け) • プライベート検索エンジンについては、本スライド P.8 で軽く紹介したが 実際の運用では、タイトルを本文より高い重み(優先度)を持たせたい 要望があるだろう。それに対応するのが重み付け登録である • 一般的な検索エンジンの初期アプローチでは、本文内で使用される文言の 頻出度(出現数)を全体平均的と比較して表示順位とすることがある。 2回目以降の検索では実際にクリックされた回数をも表示順位要因とする ことがあるが、重み付けによってプライベートサイトでは【新商品に関す る情報リソース】,【総務手続き文書】を常に最上位表示できる • 検索で見つけやすい効果的な表示をプライベートで実現する方法であるが、 パブリックサイトでは SEO や SEM (※) 努力が求められる ※SEM Search Engine Marketing / 検索サイトへ有償マーケティングにより 自社サイトへの導線を行うマーケティング手法またはその行為 11
  • 12.
    ※SEO 一般解釈と誤解釈 以下内容は SEO都市伝説? • バックリンク(外部からのアンカーリンク)が多いほど検索サイトから最上位 表示へ好結果をもたらす • コンテンツが多いほど検索サイトへ多数登録され、インデックスが多数生成さ れる • ページランクが高いソーシャルメディアにページを設けたり、いわゆる 公式サイトへ多数メディア露出することで検索サイトに有利である • HTML-Lint 等の文法チェックで好成績でなければならない • クローラを多数呼び寄せるために、Webサイトの広帯域環境が必要である • HTML のみならず XML でも記述したサイトマップ設置が必須である • IIS より Apache はメジャークローラとの通信には最適である • 独自クローラで集めたコンテンツからアフィリエイトサイトを作り、さらに SEO強化を図ることでマネタイズモデルが実現する 他にも SEO 都市伝説はあります。ページランクを絶対指標とする コストだけ発生する危険なバックリンク業者も存在します 12
  • 13.
    まとめ • Web クローラは何故存在するのか • 検索エンジンの一般構造 • パブリック(インターネット)、プライベート検索サイトの違い 今回言及しなかった内容に、クローラ頻度・速度(帯域課題)、Cookie あるい は基本認証を伴うクローリング技術とその利用例がある。これらは 45分で理解 するには困難が伴うため割愛した 13
  • 14.
    参考文献一覧 :コメント入り • 確立モデルによる Webデータ解析法 Pierre Baldi/Paolo Frasconi/Padhraic Smyth (著), 水田 正弘/南 弘征/小宮 由里子 (翻訳)著 ¥6,000 :ゼミ生、大学院生、実務者向けの教科書、良書である • Java ネットワーク プログラミング 基礎からわかる 完全入門 永嶋 浩著 ¥2,580 :クローラの作成方法は掲載されていないが一部参考にした メモ:上記いずれも公立産業技術大学院大学図書館 蔵書 14