SlideShare uma empresa Scribd logo
1 de 14
Baixar para ler offline
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

Mais conteúdo relacionado

Mais procurados

MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜
MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜
MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜
Takahiro Inoue
 
DB tech showcase: 噂のMongoDBその用途は?
DB tech showcase: 噂のMongoDBその用途は?DB tech showcase: 噂のMongoDBその用途は?
DB tech showcase: 噂のMongoDBその用途は?
Hiroaki Kubota
 
Introduction to MongoDB
Introduction to MongoDBIntroduction to MongoDB
Introduction to MongoDB
moai kids
 
Mongo dbを半年ちょっと運用してみた
Mongo dbを半年ちょっと運用してみたMongo dbを半年ちょっと運用してみた
Mongo dbを半年ちょっと運用してみた
htty_hasumi
 
MongoDBとAjaxで作る解析フロントエンド&GraphDBを用いたソーシャルデータ解析
MongoDBとAjaxで作る解析フロントエンド&GraphDBを用いたソーシャルデータ解析MongoDBとAjaxで作る解析フロントエンド&GraphDBを用いたソーシャルデータ解析
MongoDBとAjaxで作る解析フロントエンド&GraphDBを用いたソーシャルデータ解析
Takahiro Inoue
 
Mongo db勉強会の補足
Mongo db勉強会の補足Mongo db勉強会の補足
Mongo db勉強会の補足
CROOZ, inc.
 

Mais procurados (20)

日本語:Mongo dbに於けるシャーディングについて
日本語:Mongo dbに於けるシャーディングについて日本語:Mongo dbに於けるシャーディングについて
日本語:Mongo dbに於けるシャーディングについて
 
MongoDB
MongoDBMongoDB
MongoDB
 
RDB経験者に送るMongoDBの勘所(db tech showcase tokyo 2013)
RDB経験者に送るMongoDBの勘所(db tech showcase tokyo 2013)RDB経験者に送るMongoDBの勘所(db tech showcase tokyo 2013)
RDB経験者に送るMongoDBの勘所(db tech showcase tokyo 2013)
 
MongoDB〜その性質と利用場面〜
MongoDB〜その性質と利用場面〜MongoDB〜その性質と利用場面〜
MongoDB〜その性質と利用場面〜
 
後悔しないもんごもんごの使い方 〜アプリ編〜
後悔しないもんごもんごの使い方 〜アプリ編〜後悔しないもんごもんごの使い方 〜アプリ編〜
後悔しないもんごもんごの使い方 〜アプリ編〜
 
MySQLユーザ視点での小さく始めるElasticsearch
MySQLユーザ視点での小さく始めるElasticsearchMySQLユーザ視点での小さく始めるElasticsearch
MySQLユーザ視点での小さく始めるElasticsearch
 
MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜
MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜
MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜
 
ウェブから情報をあつめる
ウェブから情報をあつめるウェブから情報をあつめる
ウェブから情報をあつめる
 
DB tech showcase: 噂のMongoDBその用途は?
DB tech showcase: 噂のMongoDBその用途は?DB tech showcase: 噂のMongoDBその用途は?
DB tech showcase: 噂のMongoDBその用途は?
 
MongoDB very basic (Japanese) / MongoDB基礎の基礎
MongoDB very basic (Japanese) / MongoDB基礎の基礎MongoDB very basic (Japanese) / MongoDB基礎の基礎
MongoDB very basic (Japanese) / MongoDB基礎の基礎
 
初めてのMongo db
初めてのMongo db初めてのMongo db
初めてのMongo db
 
ElasticsearchとTasteプラグインで作るレコメンドシステム
ElasticsearchとTasteプラグインで作るレコメンドシステムElasticsearchとTasteプラグインで作るレコメンドシステム
ElasticsearchとTasteプラグインで作るレコメンドシステム
 
Introduction to MongoDB
Introduction to MongoDBIntroduction to MongoDB
Introduction to MongoDB
 
MongoDBざっくり解説
MongoDBざっくり解説MongoDBざっくり解説
MongoDBざっくり解説
 
Mongo dbを半年ちょっと運用してみた
Mongo dbを半年ちょっと運用してみたMongo dbを半年ちょっと運用してみた
Mongo dbを半年ちょっと運用してみた
 
MongoDBとAjaxで作る解析フロントエンド&GraphDBを用いたソーシャルデータ解析
MongoDBとAjaxで作る解析フロントエンド&GraphDBを用いたソーシャルデータ解析MongoDBとAjaxで作る解析フロントエンド&GraphDBを用いたソーシャルデータ解析
MongoDBとAjaxで作る解析フロントエンド&GraphDBを用いたソーシャルデータ解析
 
Pbox on softlayer
Pbox on softlayerPbox on softlayer
Pbox on softlayer
 
ESFluteによるElasticsearchでのO/Rマッパーを用いた開発
ESFluteによるElasticsearchでのO/Rマッパーを用いた開発ESFluteによるElasticsearchでのO/Rマッパーを用いた開発
ESFluteによるElasticsearchでのO/Rマッパーを用いた開発
 
初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!
 
Mongo db勉強会の補足
Mongo db勉強会の補足Mongo db勉強会の補足
Mongo db勉強会の補足
 

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

サーバーの初歩的な話セミナー@大阪20120901
サーバーの初歩的な話セミナー@大阪20120901サーバーの初歩的な話セミナー@大阪20120901
サーバーの初歩的な話セミナー@大阪20120901
Masayuki Abe
 
Windows Azure for PHP Developers
Windows Azure for PHP DevelopersWindows Azure for PHP Developers
Windows Azure for PHP Developers
fumios
 
Lesson01
Lesson01Lesson01
Lesson01
MRI
 
XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips Prism 4.5 & Kona project 等のご紹介
XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips   Prism 4.5 & Kona project 等のご紹介XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips   Prism 4.5 & Kona project 等のご紹介
XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips Prism 4.5 & Kona project 等のご紹介
Shotaro Suzuki
 

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

図書館でAPIをスルメのように 味わうには
図書館でAPIをスルメのように 味わうには図書館でAPIをスルメのように 味わうには
図書館でAPIをスルメのように 味わうには
 
ログ管理のベストプラクティス
ログ管理のベストプラクティスログ管理のベストプラクティス
ログ管理のベストプラクティス
 
Rubyによるクローラー開発
Rubyによるクローラー開発Rubyによるクローラー開発
Rubyによるクローラー開発
 
サーバーの初歩的な話セミナー@大阪20120901
サーバーの初歩的な話セミナー@大阪20120901サーバーの初歩的な話セミナー@大阪20120901
サーバーの初歩的な話セミナー@大阪20120901
 
HTML5 for IA
HTML5 for IAHTML5 for IA
HTML5 for IA
 
RESTful Web アプリの設計レビューの話
RESTful Web アプリの設計レビューの話RESTful Web アプリの設計レビューの話
RESTful Web アプリの設計レビューの話
 
Windows Azure for PHP Developers
Windows Azure for PHP DevelopersWindows Azure for PHP Developers
Windows Azure for PHP Developers
 
Hypermedia: The Missing Element to Building Adaptable Web APIs in Rails (増補日本語版)
Hypermedia: The Missing Element to Building Adaptable Web APIs in Rails (増補日本語版)Hypermedia: The Missing Element to Building Adaptable Web APIs in Rails (増補日本語版)
Hypermedia: The Missing Element to Building Adaptable Web APIs in Rails (増補日本語版)
 
PythonによるWebスクレイピング入門
PythonによるWebスクレイピング入門PythonによるWebスクレイピング入門
PythonによるWebスクレイピング入門
 
機関リポジトリ収録文献のビジビリティ向上
機関リポジトリ収録文献のビジビリティ向上機関リポジトリ収録文献のビジビリティ向上
機関リポジトリ収録文献のビジビリティ向上
 
REST APIに入門する。
REST APIに入門する。REST APIに入門する。
REST APIに入門する。
 
[BurpSuiteJapan]HTTP基礎入門
[BurpSuiteJapan]HTTP基礎入門[BurpSuiteJapan]HTTP基礎入門
[BurpSuiteJapan]HTTP基礎入門
 
Web Intents入門
Web Intents入門Web Intents入門
Web Intents入門
 
Web ブラウザの仕組み
Web ブラウザの仕組みWeb ブラウザの仕組み
Web ブラウザの仕組み
 
Lesson01
Lesson01Lesson01
Lesson01
 
XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips Prism 4.5 & Kona project 等のご紹介
XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips   Prism 4.5 & Kona project 等のご紹介XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips   Prism 4.5 & Kona project 等のご紹介
XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips Prism 4.5 & Kona project 等のご紹介
 
スキーマとURI
スキーマとURIスキーマとURI
スキーマとURI
 
NGINXでの認可について考える
NGINXでの認可について考えるNGINXでの認可について考える
NGINXでの認可について考える
 
検索エンジンを有効利用するWEBサイト構築
検索エンジンを有効利用するWEBサイト構築検索エンジンを有効利用するWEBサイト構築
検索エンジンを有効利用するWEBサイト構築
 
HTTP入門
HTTP入門HTTP入門
HTTP入門
 

Mais de Yukio Saito

圏央道ウォーキング日記
圏央道ウォーキング日記圏央道ウォーキング日記
圏央道ウォーキング日記
Yukio Saito
 

Mais de Yukio Saito (20)

東京2020ボランティア参加メモ(簡易)
東京2020ボランティア参加メモ(簡易)東京2020ボランティア参加メモ(簡易)
東京2020ボランティア参加メモ(簡易)
 
Exam prep microsoft_ai900_japanese_210428
Exam prep microsoft_ai900_japanese_210428Exam prep microsoft_ai900_japanese_210428
Exam prep microsoft_ai900_japanese_210428
 
Simple know how to creating agenda notes and daily reports
Simple know how to creating agenda notes and daily reportsSimple know how to creating agenda notes and daily reports
Simple know how to creating agenda notes and daily reports
 
Aws 転送時間計測(手順付き参考例)
Aws 転送時間計測(手順付き参考例)Aws 転送時間計測(手順付き参考例)
Aws 転送時間計測(手順付き参考例)
 
異業種から福祉業界ジョブチェンジして10か月後
異業種から福祉業界ジョブチェンジして10か月後異業種から福祉業界ジョブチェンジして10か月後
異業種から福祉業界ジョブチェンジして10か月後
 
異業種から福祉介護ジョブチェンジ検討
異業種から福祉介護ジョブチェンジ検討異業種から福祉介護ジョブチェンジ検討
異業種から福祉介護ジョブチェンジ検討
 
オンデマンド学習スタイル例 NFU
オンデマンド学習スタイル例 NFUオンデマンド学習スタイル例 NFU
オンデマンド学習スタイル例 NFU
 
Engadget電子工作部 健康ガジェットを作ろう ドS!コーチ発表最終版
Engadget電子工作部 健康ガジェットを作ろう ドS!コーチ発表最終版Engadget電子工作部 健康ガジェットを作ろう ドS!コーチ発表最終版
Engadget電子工作部 健康ガジェットを作ろう ドS!コーチ発表最終版
 
Tobii eye x controller で遊ぶ
Tobii eye x controller で遊ぶTobii eye x controller で遊ぶ
Tobii eye x controller で遊ぶ
 
斉藤之雄 が 公立大学 産業技術大学院大学 で獲得したこと。
斉藤之雄 が 公立大学 産業技術大学院大学 で獲得したこと。斉藤之雄 が 公立大学 産業技術大学院大学 で獲得したこと。
斉藤之雄 が 公立大学 産業技術大学院大学 で獲得したこと。
 
Microsoft windows phone_激安購入方法
Microsoft windows phone_激安購入方法Microsoft windows phone_激安購入方法
Microsoft windows phone_激安購入方法
 
PBLでは先行学習は大事だぜ、シラバスは参考程度で主体的に楽しもうぜ
PBLでは先行学習は大事だぜ、シラバスは参考程度で主体的に楽しもうぜPBLでは先行学習は大事だぜ、シラバスは参考程度で主体的に楽しもうぜ
PBLでは先行学習は大事だぜ、シラバスは参考程度で主体的に楽しもうぜ
 
CentOS7をインストールして遊ぶのだ
CentOS7をインストールして遊ぶのだCentOS7をインストールして遊ぶのだ
CentOS7をインストールして遊ぶのだ
 
Androidエミュレータをちょっと速くするintel haxm(ハッサム)
Androidエミュレータをちょっと速くするintel haxm(ハッサム)Androidエミュレータをちょっと速くするintel haxm(ハッサム)
Androidエミュレータをちょっと速くするintel haxm(ハッサム)
 
Winodws7のruby2でrails4を遊ぶ環境を作るのだ。
Winodws7のruby2でrails4を遊ぶ環境を作るのだ。Winodws7のruby2でrails4を遊ぶ環境を作るのだ。
Winodws7のruby2でrails4を遊ぶ環境を作るのだ。
 
Astah plugin 実行方法とSysML要求図のサンプル
Astah plugin 実行方法とSysML要求図のサンプルAstah plugin 実行方法とSysML要求図のサンプル
Astah plugin 実行方法とSysML要求図のサンプル
 
Windows8でOpenCVを使ったAndroid(MOVERIO)開発体験したい
Windows8でOpenCVを使ったAndroid(MOVERIO)開発体験したいWindows8でOpenCVを使ったAndroid(MOVERIO)開発体験したい
Windows8でOpenCVを使ったAndroid(MOVERIO)開発体験したい
 
NTTcom cloud n にサービス追加の適当な手順
NTTcom cloud n にサービス追加の適当な手順NTTcom cloud n にサービス追加の適当な手順
NTTcom cloud n にサービス追加の適当な手順
 
Intel xdk導入とhtml5サンプルビルド手順書
Intel xdk導入とhtml5サンプルビルド手順書Intel xdk導入とhtml5サンプルビルド手順書
Intel xdk導入とhtml5サンプルビルド手順書
 
圏央道ウォーキング日記
圏央道ウォーキング日記圏央道ウォーキング日記
圏央道ウォーキング日記
 

Último

TokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentationTokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentation
YukiTerazawa
 
The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024
koheioishi1
 

Último (8)

ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
 
世界を変えるクレーンを生み出そう! 高知エンジニアリングキャンプ2024プログラム
世界を変えるクレーンを生み出そう! 高知エンジニアリングキャンプ2024プログラム世界を変えるクレーンを生み出そう! 高知エンジニアリングキャンプ2024プログラム
世界を変えるクレーンを生み出そう! 高知エンジニアリングキャンプ2024プログラム
 
2024年度 東京工業大学 工学院 機械系 大学院 修士課程 入試 説明会 資料
2024年度 東京工業大学 工学院 機械系 大学院 修士課程 入試 説明会 資料2024年度 東京工業大学 工学院 機械系 大学院 修士課程 入試 説明会 資料
2024年度 東京工業大学 工学院 機械系 大学院 修士課程 入試 説明会 資料
 
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
 
次世代機の製品コンセプトを描く ~未来の機械を創造してみよう~
次世代機の製品コンセプトを描く ~未来の機械を創造してみよう~次世代機の製品コンセプトを描く ~未来の機械を創造してみよう~
次世代機の製品コンセプトを描く ~未来の機械を創造してみよう~
 
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
 
TokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentationTokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentation
 
The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024
 

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