SlideShare a Scribd company logo
ウェブから情報をあつめる




2012/12/11      1     UT Startup Gym
UT Startup Gym とは?



             アイデアをカタチにするプログラム

             プロジェクト
             企画から実装まで
             スタートアップ



2012/12/11               2          UT Startup Gym
スケジュール
                                              Keywords:

              • プログラミング入門            ソーシャルウェブアプリケーション, API,
   Oct, 12                           bot, HTML5
           • プラニング
                                     リーンスタートアップ, ビジネスプラニン
   Nov, 12 • プロジェクトスタート
                                     グ, HTML, CSS, PHP, javascript
           • 開発開始
   Dec, 12 • 冬季開発合宿                  チーム結成, 企画, ディスカッション
                                     git, フレームワーク, MySQL, Apache
            • ウェブデザイン
    Jan, 13 • 週間報告会
                                     シナリオ, ペルソナ, ワイヤフレーム,
                                     サイトマップ, DB スキーム
              • jQuery, 中間発表
    Feb, 13
                                     ゲーミフィケーション, 仮説検証, データマ
                                     イニング, アクセシビリティ
              • 作業会
   Mar, 13

                                     レスポンシブデザイン, プレゼンテーショ
              • リリース会                ン
    Apr, 13


2012/12/11                       3                         UT Startup Gym
M        D        講師(敬称略) タイトル                       要素
10 13 飯塚                  かんたん Facebook アプリをつくる      HTML, CSS, js
             21 飯塚        かんたん Twitter アプリをつくる       UNIX, vim, PHP
             27 川上        かんたん アンケートフォームをつくる         MySQL, MVC
    11        4 AWS 高山様   サーバを立てよう                   AWS
             10 飯塚・石村     スタートアップの心構え                ビジネスプラン、リーンスタートアップ
             17 飯塚・佐藤     プロダクトデザイン                  シナリオ、ペルソナ、ワイヤフレーム
             24           お休み(飯塚@ジャカルタ)
12            1 ゆーすけべー様 ウェブサービスの企画のコツ                企画プロセス、ウェブサービス運用
              8 飯塚        ウェブから情報をあつめる               クローラ, XPath, 正規表現
             15           プロジェクトキックオフ                アンカンファレンス
             22           ハッカソン
    1 12 石村               ユーザがハマるアプリデザイン             ゲーミフィケーション
             19 飯塚        かんたん・きれい・便利なウェブデザイン        Twitter Bootstrap, Responsive Design, LESS

             26 未定                                   Git
    2         2 斎藤        アニメーションをつくる                javascript, jQuery
              9 ゲスト       ゲストスピーカー
             16           中間発表
    3                     作業会
    4 13                  プレゼンテーション
             20           リリース会
2012/12/11                                       4                                 UT Startup Gym
目次
• イントロダクション
• ソースコードを取ってくる
      – PHP file_get_contents($url)
• HTML を解析する
      – 正規表現
      – XPath
• 自動的で動かす
      – cron




2012/12/11                     5      UT Startup Gym
クローラってなに?

• 自動的にウェブページにアクセスし、データを
  収集するプログラム。ロボットとも言う。

• これを走らせることを「クローリング」とい
  う。

• スクレイピング=HTMLを解析して、必要な情
  報を抜き出すこと。


2012/12/11       6       UT Startup Gym
クローラとウェブアプリ



• いきなり充実したコンテンツのサイトができる

• 広告をつければ「サーバに稼いでもらう感覚」を
  手っ取り早く味わうことができる




2012/12/11        7        UT Startup Gym
Spysee




2012/12/11     8      UT Startup Gym
Bijostagram




2012/12/11        9        UT Startup Gym
ソースコードを取ってくる
• とりあえず名言ページを題材に
  file_get_contents() の使い方に慣れる




2012/12/11        10             UT Startup Gym
ソースコードを取ってくる1
<?
$url = "http://www.meigensyu.com/quotations/view/random";
$html = file_get_contents($url);
echo $html;




2012/12/11                          11                      UT Startup Gym
ソースコードを取ってくる2
<?
$url = "http://www.meigensyu.com/quotations/view/random/";
$html = file_get_contents($url);
preg_match('/<div class="text">(.+)</div‟>/', $html, $match);
var_dump($match);




2012/12/11                             12                        UT Startup Gym
正規表現


• 任意の文字列に対して、指定したパターンに
  マッチしているかを試す
• パーサーではないので、構造を持ったデータに
  は弱い
• 構造を持たないフラットなデータに良い。
      – トークナイザ
      – バリデータ



2012/12/11        13    UT Startup Gym
正規表現の例
• ^d+$ → 1234 とか 39843452 にマッチ。12
  324 とか ff0000 とかにはマッチしない。
      –   ^: 行頭
      –   d: 半角数字
      –   +: 1回以上の繰り返し
      –   $: 行末
• ^[A-Z]*(d+)$ → 13 とか ADB1132 にマッチ。し
  かも、13 とか 1132 が抜き出せる。
      – *: 0回以上の繰り返し
      – (): 抜き出す


2012/12/11               14      UT Startup Gym
HTML を解析する1
• NAVER まとめの記事ページから、写真の URL
  だけを収集する
• とりあえず単一ページで動作




2012/12/11        15       UT Startup Gym
HTML を解析する1
<?
$url = "http://matome.naver.jp/odai/2133765614325689001";
$res = file_get_contents($url);
$dom = @DOMDocument::loadHTML($res);
$xml = simplexml_import_dom($dom);
$imgs = $xml->xpath("//img[@class='MTMItemThumb']");
foreach ($imgs as $img) {
   echo $img["src"]."n";
   //echo "<img src='".$img["src"]."'>n";
}




2012/12/11                          16                      UT Startup Gym
XPath



• XML や HTML の任意の位置を取得するための式
      – プログラミング言語に依らない


• XPath エンジンがあれば、XPath を指定して
  HTML 上の値を簡単に持って来ることができる




2012/12/11        17     UT Startup Gym
XPath の例



• //img[@class=„MTMItemThumb‟]
  →class属性の値が„MTMItemThumb‟の img 要素
      – // は /html/body の短縮形
      – @ は属性のこと (@id=, @src=, @href= etc.)


• 他にも、様々な表現方法がある




2012/12/11                    18              UT Startup Gym
ブラウザで表示する
生成された HTML ファイルをブラウザで表示してみよう。




//echo $img[“src”].“n”;
echo “<img src=„”.$img[“src”].“‟>n”;




$ php hoge.php > piyo.html




2012/12/11                              19   UT Startup Gym
HTML を解析する2
• 食べログの検索結果から店名とURL、食べログ
  得点を取得する。




2012/12/11        20       UT Startup Gym
HTML を解析する2
<?
$url = 食べログ検索結果の URL;
$res = file_get_contents($url);
$dom = @DOMDocument::loadHTML($res);
$xml = simplexml_import_dom($dom);
$shops = $xml->xpath("//li[contains(@class,'rank')]");
foreach ($shops as $shop) {
   $name = $shop->div[0]->div[0]->div[0]->strong[0]->a;
   echo "Shop Name: $namen";
   echo "URL: ".$name["href"]."n";
   $rank = $shop->div[2]->div[0]->p[0]->em;
   echo "Rank: $ranknn";
}



2012/12/11                            21                  UT Startup Gym
HTML を解析する3
• アルク 英辞郎
• 英単語の難度、発音を知りたい
• 普通にやると、詰まる
      – User Agent で制限をかけている


※このコードが実行できない場合、PHP むけ
cURL をインストールすること。
$ sudo apt-get install php5-curl



2012/12/11            22       UT Startup Gym
HTML を解析する3(できない)
<?
if (isset($argv[1])) {
    $query = $argv[1];
    $res = file_get_contents("http://eow.alc.co.jp/$query/UTF-8/");
    // ブラウザでは見られるのに、ソースコードを取得できない
    $dom = @DOMDocument::loadHTML($res);
    $xml = simplexml_import_dom($dom);
    $properties = $xml->xpath('//span[@class="label" and .= "【@】" ]/following-sibling::text()[1]');
    if (!empty($properties)) {
        $prop_array = explode("、", $properties[0]);
        echo "[".$query."] レベル: ".$prop_array[0]." ヨミ: ".$prop_array[1]."n";
    } else {
        echo "結果を取得できませんでした。正しい英単語を入力してください。n";
    }
}




2012/12/11                                                 23                                         UT Startup Gym
HTML を解析する3(できる)
<?
if (isset($argv[1])) {
    $query = $argv[1];
    $doc = new DOMDocument();
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, "http://eow.alc.co.jp/$query/UTF-8/");
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); //標準出力でなく、文字列として取得
    curl_setopt($ch, CURLOPT_USERAGENT, “Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20041001
Firefox/0.10.1” ); //Firefox のふりをしてアクセス
    $res = curl_exec($ch);
    curl_close($ch);
    $dom = @DOMDocument::loadHTML($res);
    $xml = simplexml_import_dom($dom);
    $properties = $xml->xpath('//span[@class="label" and .= "【@】" ]/following-sibling::text()[1]');
    if (!empty($properties)) {
        $prop_array = explode("、", $properties[0]);
        echo "[".$query."] レベル: ".$prop_array[0]." ヨミ: ".$prop_array[1]."n";
    } else {
        echo "結果を取得できませんでした。正しい英単語を入力してください。n";
    }
} else {
    echo "検索する英単語を入力してください。n";
}

2012/12/11                                          24                                       UT Startup Gym
HTML を解析する4
• NAVER まとめふたたび
• このままだと、1ページ目しか収集できない
• 自動で次ページの収集もできないか?




2012/12/11        25       UT Startup Gym
HTML を解析する4
if (isset($argv[1])) {
    if (preg_match("/http://matome.naver.jp/odai/(d+)$/", $argv[1])) {
        $url = $argv[1];
        $res = @file_get_contents($url);
        while ($res) {
          $data = getData($res);
          foreach ($data["image"] as $image) {
              echo "<img src='".$image["src"]."'>n";
          }
          if (!$data["nextPage"]) {
              $res = null;
          } else {
              $res = @file_get_contents($url."?page=".$data["nextPage"]);
          }
          sleep(1);
        }
    }
}
つづく...

  2012/12/11                                            26                      UT Startup Gym
HTML を解析する4
function getData ($html) {
   $dom = @DOMDocument::loadHTML($html);
   $xml = simplexml_import_dom($dom);
   $result["image"] = $xml->xpath("//img[@class='MTMItemThumb']");
   $pager = $xml->xpath("//div[@class='MdPagination03']");
   $result["nextPage"] = null;
   if (!empty($pager)) {
       $last_anchor = $pager[0]->a[count($pager[0]->a)-1];
       $current_page = $pager[0]->strong;
       if ($last_anchor + 1 != $current_page) {
           $result["nextPage"] = $current_page + 1;
       }
   }
   return $result;
}




 2012/12/11                                27                        UT Startup Gym
cron
• 定期的にプログラムを実行
• とても簡単
• コマンドラインで動くプログラムをその
  まま使える




2012/12/11    28    UT Startup Gym
cron
$ vim crontab.txt

# フルパスで記述すること
# 毎日 4 時 12 分に実行
12 4 * * * php /home/user/crawl_user_page.php

# 毎分実行
* * * * * php /home/user/crawl_top_page.php >>/home/user/log.txt



$ crontab < crontab.txt             # ジョブの登録
$ crontab –l                           # 登録されたジョブの確認
$ crontab –e                           # ジョブの編集
$ crontab –r                           # ジョブの全消去


2012/12/11                     29                      UT Startup Gym
自動でプログラムを動かす
<?
$article = getRSS();
$res = @file_get_contents($article->link);
while ($res) {
   $data = getData($res);
   foreach ($data["image"] as $image) {
       echo "<img src='".$image["src"]."'>n";
   }
   if (!$data["nextPage"]) {
       $res = null;
   } else {
       $res = @file_get_contents($url."?page=".$data["nextPage"]);
   }
   sleep(1);
} つづく...




2012/12/11                                 30                        UT Startup Gym
自動でプログラムを動かす
function getData ($html) {
   $dom = @DOMDocument::loadHTML($html);
   $xml = simplexml_import_dom($dom);
   $result["image"] = $xml->xpath("//img[@class='MTMItemThumb']");
   $pager = $xml->xpath("//div[@class='MdPagination03']");
   $result["nextPage"] = null;
   if (!empty($pager)) {
       $last_anchor = $pager[0]->a[count($pager[0]->a)-1];
       $current_page = $pager[0]->strong;
       if ($last_anchor + 1 != $current_page) {
           $result["nextPage"] = $current_page + 1;
       }
   }
   return $result;
} つづく...




 2012/12/11                               31                         UT Startup Gym
自動でプログラムを動かす
function getRSS() {
   $xml = simplexml_load_file("http://matome.naver.jp/feed/topic/1Luvh");
   $items = array();
   foreach ($xml->channel->item as $item) {
      $items[] = $item;
   }
   shuffle($items);
   return $items[0];
}




2012/12/11                                 32                               UT Startup Gym
ワーク



• 何かできそうな気がして来ませんか?
• 自分が面白そうと思うサイトから情報を集めて
  くる。
• 複数サイトからの情報を組み合わせていると
  GOOD。(マッシュアップ)




2012/12/11    33    UT Startup Gym

More Related Content

What's hot

WordPressで投稿記事情報の取得方法
WordPressで投稿記事情報の取得方法WordPressで投稿記事情報の取得方法
WordPressで投稿記事情報の取得方法
regret raym
 
Pysparkで始めるデータ分析
Pysparkで始めるデータ分析Pysparkで始めるデータ分析
Pysparkで始めるデータ分析
Tanaka Yuichi
 
Data Scientist Workbench - dots0729
Data Scientist Workbench - dots0729Data Scientist Workbench - dots0729
Data Scientist Workbench - dots0729
s. kaijima
 
1000台規模のHadoopクラスタをHive/Tezアプリケーションにあわせてパフォーマンスチューニングした話
1000台規模のHadoopクラスタをHive/Tezアプリケーションにあわせてパフォーマンスチューニングした話1000台規模のHadoopクラスタをHive/Tezアプリケーションにあわせてパフォーマンスチューニングした話
1000台規模のHadoopクラスタをHive/Tezアプリケーションにあわせてパフォーマンスチューニングした話
Yahoo!デベロッパーネットワーク
 
はじめてのモバイルウェブアプリ 3 SPARQLハンズオン オープンデータ水位ゲーム
はじめてのモバイルウェブアプリ 3 SPARQLハンズオン オープンデータ水位ゲームはじめてのモバイルウェブアプリ 3 SPARQLハンズオン オープンデータ水位ゲーム
はじめてのモバイルウェブアプリ 3 SPARQLハンズオン オープンデータ水位ゲーム
Taisuke Fukuno
 
HTMLからの本文抽出
HTMLからの本文抽出HTMLからの本文抽出
HTMLからの本文抽出
Lintaro Ina
 
JavaScriptことはじめ
JavaScriptことはじめJavaScriptことはじめ
JavaScriptことはじめ
Yuki Ishikawa
 
これからのpre_get_postsの話をしよう
これからのpre_get_postsの話をしようこれからのpre_get_postsの話をしよう
これからのpre_get_postsの話をしよう
Hishikawa Takuro
 
LODを使ったサイトとプラグインを作ってみた話[WordBenchOsaka]
LODを使ったサイトとプラグインを作ってみた話[WordBenchOsaka]LODを使ったサイトとプラグインを作ってみた話[WordBenchOsaka]
LODを使ったサイトとプラグインを作ってみた話[WordBenchOsaka]
Hidetaka Okamoto
 
WordPressの常識をくつがえす超簡単テーマ doshirouto2014 を作ったのでこれでテーマを理解しよう!
WordPressの常識をくつがえす超簡単テーマ doshirouto2014 を作ったのでこれでテーマを理解しよう!WordPressの常識をくつがえす超簡単テーマ doshirouto2014 を作ったのでこれでテーマを理解しよう!
WordPressの常識をくつがえす超簡単テーマ doshirouto2014 を作ったのでこれでテーマを理解しよう!
Takashi Uemura
 
elasticsearch-hadoopをつかってごにょごにょしてみる
elasticsearch-hadoopをつかってごにょごにょしてみるelasticsearch-hadoopをつかってごにょごにょしてみる
elasticsearch-hadoopをつかってごにょごにょしてみる
Katsushi Yamashita
 
Rawler C#用のWebスクレイピングフレームワーク
Rawler C#用のWebスクレイピングフレームワークRawler C#用のWebスクレイピングフレームワーク
Rawler C#用のWebスクレイピングフレームワーク
Takaichi Ito
 
ハンズオン勉強会 はじめてのJavaScriptとSPARQL
ハンズオン勉強会 はじめてのJavaScriptとSPARQLハンズオン勉強会 はじめてのJavaScriptとSPARQL
ハンズオン勉強会 はじめてのJavaScriptとSPARQL
Taisuke Fukuno
 
WordPressの常識をくつがえす超簡単テーマ"doshirouto"を作ったのでこれでテーマを理解しよう!
WordPressの常識をくつがえす超簡単テーマ"doshirouto"を作ったのでこれでテーマを理解しよう!WordPressの常識をくつがえす超簡単テーマ"doshirouto"を作ったのでこれでテーマを理解しよう!
WordPressの常識をくつがえす超簡単テーマ"doshirouto"を作ったのでこれでテーマを理解しよう!
Takashi Uemura
 
WebデザイナのためのjQuery入門。
WebデザイナのためのjQuery入門。WebデザイナのためのjQuery入門。
WebデザイナのためのjQuery入門。
Yossy Taka
 
基幹業務もHadoop(EMR)で!!のその後
基幹業務もHadoop(EMR)で!!のその後基幹業務もHadoop(EMR)で!!のその後
基幹業務もHadoop(EMR)で!!のその後
Keigo Suda
 
WordPressテーマ作成
WordPressテーマ作成WordPressテーマ作成
WordPressテーマ作成
Takami Kazuya
 
SPARQLから入門するLinked Open Data(LOD)ハンズオン 第2回
SPARQLから入門するLinked Open Data(LOD)ハンズオン 第2回SPARQLから入門するLinked Open Data(LOD)ハンズオン 第2回
SPARQLから入門するLinked Open Data(LOD)ハンズオン 第2回
yamahige
 

What's hot (20)

WordPressで投稿記事情報の取得方法
WordPressで投稿記事情報の取得方法WordPressで投稿記事情報の取得方法
WordPressで投稿記事情報の取得方法
 
Pysparkで始めるデータ分析
Pysparkで始めるデータ分析Pysparkで始めるデータ分析
Pysparkで始めるデータ分析
 
Data Scientist Workbench - dots0729
Data Scientist Workbench - dots0729Data Scientist Workbench - dots0729
Data Scientist Workbench - dots0729
 
1000台規模のHadoopクラスタをHive/Tezアプリケーションにあわせてパフォーマンスチューニングした話
1000台規模のHadoopクラスタをHive/Tezアプリケーションにあわせてパフォーマンスチューニングした話1000台規模のHadoopクラスタをHive/Tezアプリケーションにあわせてパフォーマンスチューニングした話
1000台規模のHadoopクラスタをHive/Tezアプリケーションにあわせてパフォーマンスチューニングした話
 
はじめてのモバイルウェブアプリ 3 SPARQLハンズオン オープンデータ水位ゲーム
はじめてのモバイルウェブアプリ 3 SPARQLハンズオン オープンデータ水位ゲームはじめてのモバイルウェブアプリ 3 SPARQLハンズオン オープンデータ水位ゲーム
はじめてのモバイルウェブアプリ 3 SPARQLハンズオン オープンデータ水位ゲーム
 
Shizupptx
ShizupptxShizupptx
Shizupptx
 
HTMLからの本文抽出
HTMLからの本文抽出HTMLからの本文抽出
HTMLからの本文抽出
 
JavaScriptことはじめ
JavaScriptことはじめJavaScriptことはじめ
JavaScriptことはじめ
 
実践スクレイピング
実践スクレイピング実践スクレイピング
実践スクレイピング
 
これからのpre_get_postsの話をしよう
これからのpre_get_postsの話をしようこれからのpre_get_postsの話をしよう
これからのpre_get_postsの話をしよう
 
LODを使ったサイトとプラグインを作ってみた話[WordBenchOsaka]
LODを使ったサイトとプラグインを作ってみた話[WordBenchOsaka]LODを使ったサイトとプラグインを作ってみた話[WordBenchOsaka]
LODを使ったサイトとプラグインを作ってみた話[WordBenchOsaka]
 
WordPressの常識をくつがえす超簡単テーマ doshirouto2014 を作ったのでこれでテーマを理解しよう!
WordPressの常識をくつがえす超簡単テーマ doshirouto2014 を作ったのでこれでテーマを理解しよう!WordPressの常識をくつがえす超簡単テーマ doshirouto2014 を作ったのでこれでテーマを理解しよう!
WordPressの常識をくつがえす超簡単テーマ doshirouto2014 を作ったのでこれでテーマを理解しよう!
 
elasticsearch-hadoopをつかってごにょごにょしてみる
elasticsearch-hadoopをつかってごにょごにょしてみるelasticsearch-hadoopをつかってごにょごにょしてみる
elasticsearch-hadoopをつかってごにょごにょしてみる
 
Rawler C#用のWebスクレイピングフレームワーク
Rawler C#用のWebスクレイピングフレームワークRawler C#用のWebスクレイピングフレームワーク
Rawler C#用のWebスクレイピングフレームワーク
 
ハンズオン勉強会 はじめてのJavaScriptとSPARQL
ハンズオン勉強会 はじめてのJavaScriptとSPARQLハンズオン勉強会 はじめてのJavaScriptとSPARQL
ハンズオン勉強会 はじめてのJavaScriptとSPARQL
 
WordPressの常識をくつがえす超簡単テーマ"doshirouto"を作ったのでこれでテーマを理解しよう!
WordPressの常識をくつがえす超簡単テーマ"doshirouto"を作ったのでこれでテーマを理解しよう!WordPressの常識をくつがえす超簡単テーマ"doshirouto"を作ったのでこれでテーマを理解しよう!
WordPressの常識をくつがえす超簡単テーマ"doshirouto"を作ったのでこれでテーマを理解しよう!
 
WebデザイナのためのjQuery入門。
WebデザイナのためのjQuery入門。WebデザイナのためのjQuery入門。
WebデザイナのためのjQuery入門。
 
基幹業務もHadoop(EMR)で!!のその後
基幹業務もHadoop(EMR)で!!のその後基幹業務もHadoop(EMR)で!!のその後
基幹業務もHadoop(EMR)で!!のその後
 
WordPressテーマ作成
WordPressテーマ作成WordPressテーマ作成
WordPressテーマ作成
 
SPARQLから入門するLinked Open Data(LOD)ハンズオン 第2回
SPARQLから入門するLinked Open Data(LOD)ハンズオン 第2回SPARQLから入門するLinked Open Data(LOD)ハンズオン 第2回
SPARQLから入門するLinked Open Data(LOD)ハンズオン 第2回
 

Viewers also liked

PythonによるWebスクレイピング入門
PythonによるWebスクレイピング入門PythonによるWebスクレイピング入門
PythonによるWebスクレイピング入門
Hironori Sekine
 
Complenet 2017
Complenet 2017Complenet 2017
Complenet 2017
tnoulas
 
Aprendizaje Basado en Proyectos. ABP
Aprendizaje Basado en Proyectos. ABPAprendizaje Basado en Proyectos. ABP
Aprendizaje Basado en Proyectos. ABP
Coral Elizondo
 
las tres r de la ecologia
las tres r de la ecologialas tres r de la ecologia
las tres r de la ecologia
dulcecandymiss
 
Love and Happiness: Building Community with Smart Communications
Love and Happiness: Building Community with Smart CommunicationsLove and Happiness: Building Community with Smart Communications
Love and Happiness: Building Community with Smart Communications
Farra Trompeter, Big Duck
 
The Top 10 Facebook and Twitter Advertising Hacks of All Time - Larry Kim's P...
The Top 10 Facebook and Twitter Advertising Hacks of All Time - Larry Kim's P...The Top 10 Facebook and Twitter Advertising Hacks of All Time - Larry Kim's P...
The Top 10 Facebook and Twitter Advertising Hacks of All Time - Larry Kim's P...
Internet Marketing Software - WordStream
 
Anemoneによるクローラー入門
Anemoneによるクローラー入門Anemoneによるクローラー入門
Anemoneによるクローラー入門
Tasuku Nakano
 
What is Deep Learning?
What is Deep Learning?What is Deep Learning?
What is Deep Learning?
NVIDIA
 
Payments Trends 2017
Payments Trends 2017Payments Trends 2017
Payments Trends 2017
Capgemini
 
B2B Marketing and The Power of Twitter
B2B Marketing and The Power of TwitterB2B Marketing and The Power of Twitter
B2B Marketing and The Power of Twitter
Steve Yanor
 
The Marketer's Guide To Customer Interviews
The Marketer's Guide To Customer InterviewsThe Marketer's Guide To Customer Interviews
The Marketer's Guide To Customer Interviews
Good Funnel
 
ELSA France "Teaching is us!"
ELSA France "Teaching is us!" ELSA France "Teaching is us!"
ELSA France "Teaching is us!"
Adrian Scarlett
 
The Be-All, End-All List of Small Business Tax Deductions
The Be-All, End-All List of Small Business Tax DeductionsThe Be-All, End-All List of Small Business Tax Deductions
The Be-All, End-All List of Small Business Tax Deductions
Wagepoint
 
Rubyで作るクローラー Ruby crawler
Rubyで作るクローラー Ruby crawlerRubyで作るクローラー Ruby crawler
Rubyで作るクローラー Ruby crawler
Takuro Sasaki
 
Webクローリング&スクレイピングの最前線 公開用
Webクローリング&スクレイピングの最前線 公開用Webクローリング&スクレイピングの最前線 公開用
Webクローリング&スクレイピングの最前線 公開用
Lumin Hacker
 
5 questions to answer before opening an E-shop!
5 questions to answer before opening an E-shop!5 questions to answer before opening an E-shop!
5 questions to answer before opening an E-shop!
Sendato
 
言語モデル入門 (第二版)
言語モデル入門 (第二版)言語モデル入門 (第二版)
言語モデル入門 (第二版)
Yoshinari Fujinuma
 
iQONを支えるクローラーの裏側
iQONを支えるクローラーの裏側iQONを支えるクローラーの裏側
iQONを支えるクローラーの裏側
Takehiro Shiozaki
 
RUNNING Smalltalk - 実践Smalltalk
RUNNING Smalltalk - 実践SmalltalkRUNNING Smalltalk - 実践Smalltalk
RUNNING Smalltalk - 実践Smalltalk
Sho Yoshida
 
z/OSMF Workflow Editor Lab - Try it out on your z/OSMF system
z/OSMF Workflow Editor Lab - Try it out on your z/OSMF systemz/OSMF Workflow Editor Lab - Try it out on your z/OSMF system
z/OSMF Workflow Editor Lab - Try it out on your z/OSMF system
Marna Walle
 

Viewers also liked (20)

PythonによるWebスクレイピング入門
PythonによるWebスクレイピング入門PythonによるWebスクレイピング入門
PythonによるWebスクレイピング入門
 
Complenet 2017
Complenet 2017Complenet 2017
Complenet 2017
 
Aprendizaje Basado en Proyectos. ABP
Aprendizaje Basado en Proyectos. ABPAprendizaje Basado en Proyectos. ABP
Aprendizaje Basado en Proyectos. ABP
 
las tres r de la ecologia
las tres r de la ecologialas tres r de la ecologia
las tres r de la ecologia
 
Love and Happiness: Building Community with Smart Communications
Love and Happiness: Building Community with Smart CommunicationsLove and Happiness: Building Community with Smart Communications
Love and Happiness: Building Community with Smart Communications
 
The Top 10 Facebook and Twitter Advertising Hacks of All Time - Larry Kim's P...
The Top 10 Facebook and Twitter Advertising Hacks of All Time - Larry Kim's P...The Top 10 Facebook and Twitter Advertising Hacks of All Time - Larry Kim's P...
The Top 10 Facebook and Twitter Advertising Hacks of All Time - Larry Kim's P...
 
Anemoneによるクローラー入門
Anemoneによるクローラー入門Anemoneによるクローラー入門
Anemoneによるクローラー入門
 
What is Deep Learning?
What is Deep Learning?What is Deep Learning?
What is Deep Learning?
 
Payments Trends 2017
Payments Trends 2017Payments Trends 2017
Payments Trends 2017
 
B2B Marketing and The Power of Twitter
B2B Marketing and The Power of TwitterB2B Marketing and The Power of Twitter
B2B Marketing and The Power of Twitter
 
The Marketer's Guide To Customer Interviews
The Marketer's Guide To Customer InterviewsThe Marketer's Guide To Customer Interviews
The Marketer's Guide To Customer Interviews
 
ELSA France "Teaching is us!"
ELSA France "Teaching is us!" ELSA France "Teaching is us!"
ELSA France "Teaching is us!"
 
The Be-All, End-All List of Small Business Tax Deductions
The Be-All, End-All List of Small Business Tax DeductionsThe Be-All, End-All List of Small Business Tax Deductions
The Be-All, End-All List of Small Business Tax Deductions
 
Rubyで作るクローラー Ruby crawler
Rubyで作るクローラー Ruby crawlerRubyで作るクローラー Ruby crawler
Rubyで作るクローラー Ruby crawler
 
Webクローリング&スクレイピングの最前線 公開用
Webクローリング&スクレイピングの最前線 公開用Webクローリング&スクレイピングの最前線 公開用
Webクローリング&スクレイピングの最前線 公開用
 
5 questions to answer before opening an E-shop!
5 questions to answer before opening an E-shop!5 questions to answer before opening an E-shop!
5 questions to answer before opening an E-shop!
 
言語モデル入門 (第二版)
言語モデル入門 (第二版)言語モデル入門 (第二版)
言語モデル入門 (第二版)
 
iQONを支えるクローラーの裏側
iQONを支えるクローラーの裏側iQONを支えるクローラーの裏側
iQONを支えるクローラーの裏側
 
RUNNING Smalltalk - 実践Smalltalk
RUNNING Smalltalk - 実践SmalltalkRUNNING Smalltalk - 実践Smalltalk
RUNNING Smalltalk - 実践Smalltalk
 
z/OSMF Workflow Editor Lab - Try it out on your z/OSMF system
z/OSMF Workflow Editor Lab - Try it out on your z/OSMF systemz/OSMF Workflow Editor Lab - Try it out on your z/OSMF system
z/OSMF Workflow Editor Lab - Try it out on your z/OSMF system
 

Similar to ウェブから情報をあつめる

かんたん Twitter アプリをつくろう
かんたん Twitter アプリをつくろう かんたん Twitter アプリをつくろう
かんたん Twitter アプリをつくろう
Shuhei Iitsuka
 
データマイニング+WEB勉強会資料第6回
データマイニング+WEB勉強会資料第6回データマイニング+WEB勉強会資料第6回
データマイニング+WEB勉強会資料第6回
Naoyuki Yamada
 
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
Hiroaki KOBAYASHI
 
データベースを使おう
データベースを使おうデータベースを使おう
データベースを使おう
Shuhei Iitsuka
 
かんたんキレイなウェブデザイン
かんたんキレイなウェブデザインかんたんキレイなウェブデザイン
かんたんキレイなウェブデザイン
Shuhei Iitsuka
 
Microsoft azure上にwebサイトやアプリケーションを構築する方法 アドバンスド
Microsoft azure上にwebサイトやアプリケーションを構築する方法 アドバンスドMicrosoft azure上にwebサイトやアプリケーションを構築する方法 アドバンスド
Microsoft azure上にwebサイトやアプリケーションを構築する方法 アドバンスド
Kazumi Hirose
 
今、最もイケてるPHPフレームワークLaravel4
今、最もイケてるPHPフレームワークLaravel4今、最もイケてるPHPフレームワークLaravel4
今、最もイケてるPHPフレームワークLaravel4
アシアル株式会社
 
[東京] JapanSharePointGroup 勉強会 #2
[東京] JapanSharePointGroup 勉強会 #2[東京] JapanSharePointGroup 勉強会 #2
[東京] JapanSharePointGroup 勉強会 #2
Atsuo Yamasaki
 
PerlとSQLのいろいろ
PerlとSQLのいろいろPerlとSQLのいろいろ
PerlとSQLのいろいろ
Takuya Tsuchida
 
CodeIgniterによるPhwittr
CodeIgniterによるPhwittrCodeIgniterによるPhwittr
CodeIgniterによるPhwittr
kenjis
 
Spring data-rest-and-spring-cloud-contract
Spring data-rest-and-spring-cloud-contractSpring data-rest-and-spring-cloud-contract
Spring data-rest-and-spring-cloud-contract
Takeshi Ogawa
 
ソーシャルアプリ勉強会(第一回資料)配布用
ソーシャルアプリ勉強会(第一回資料)配布用ソーシャルアプリ勉強会(第一回資料)配布用
ソーシャルアプリ勉強会(第一回資料)配布用
Yatabe Terumasa
 
Hadoop基盤上のETL構築実践例 ~多様なデータをどう扱う?~
Hadoop基盤上のETL構築実践例 ~多様なデータをどう扱う?~Hadoop基盤上のETL構築実践例 ~多様なデータをどう扱う?~
Hadoop基盤上のETL構築実践例 ~多様なデータをどう扱う?~
Sotaro Kimura
 
徳島OSS勉強会第四回 シラサギハンズオン 0925
徳島OSS勉強会第四回 シラサギハンズオン 0925徳島OSS勉強会第四回 シラサギハンズオン 0925
徳島OSS勉強会第四回 シラサギハンズオン 0925
Yu Ito
 
ScalaMatsuri 2016
ScalaMatsuri 2016ScalaMatsuri 2016
ScalaMatsuri 2016
Yoshitaka Fujii
 
文字コードの脆弱性はこの3年間でどの程度対策されたか?
文字コードの脆弱性はこの3年間でどの程度対策されたか?文字コードの脆弱性はこの3年間でどの程度対策されたか?
文字コードの脆弱性はこの3年間でどの程度対策されたか?
Hiroshi Tokumaru
 
WordBench Kobe jQueryどうでしょう
WordBench Kobe jQueryどうでしょうWordBench Kobe jQueryどうでしょう
WordBench Kobe jQueryどうでしょう
Hishikawa Takuro
 
小さな開発会社でもできた、WordPress 新ビジネスの可能性 -WordCamp Kansai 2024-
小さな開発会社でもできた、WordPress 新ビジネスの可能性  -WordCamp Kansai 2024-小さな開発会社でもできた、WordPress 新ビジネスの可能性  -WordCamp Kansai 2024-
小さな開発会社でもできた、WordPress 新ビジネスの可能性 -WordCamp Kansai 2024-
KojiMaruyama5
 
テスト駆動開発の進化
テスト駆動開発の進化テスト駆動開発の進化
テスト駆動開発の進化
Yukei Wachi
 

Similar to ウェブから情報をあつめる (20)

かんたん Twitter アプリをつくろう
かんたん Twitter アプリをつくろう かんたん Twitter アプリをつくろう
かんたん Twitter アプリをつくろう
 
データマイニング+WEB勉強会資料第6回
データマイニング+WEB勉強会資料第6回データマイニング+WEB勉強会資料第6回
データマイニング+WEB勉強会資料第6回
 
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
仕事の手離れを良くする手段としての、静的検査のあるテンプレートエンジン (YATT::Lite talk at 2014 テンプレートエンジンNight)
 
データベースを使おう
データベースを使おうデータベースを使おう
データベースを使おう
 
かんたんキレイなウェブデザイン
かんたんキレイなウェブデザインかんたんキレイなウェブデザイン
かんたんキレイなウェブデザイン
 
Git
GitGit
Git
 
Microsoft azure上にwebサイトやアプリケーションを構築する方法 アドバンスド
Microsoft azure上にwebサイトやアプリケーションを構築する方法 アドバンスドMicrosoft azure上にwebサイトやアプリケーションを構築する方法 アドバンスド
Microsoft azure上にwebサイトやアプリケーションを構築する方法 アドバンスド
 
今、最もイケてるPHPフレームワークLaravel4
今、最もイケてるPHPフレームワークLaravel4今、最もイケてるPHPフレームワークLaravel4
今、最もイケてるPHPフレームワークLaravel4
 
[東京] JapanSharePointGroup 勉強会 #2
[東京] JapanSharePointGroup 勉強会 #2[東京] JapanSharePointGroup 勉強会 #2
[東京] JapanSharePointGroup 勉強会 #2
 
PerlとSQLのいろいろ
PerlとSQLのいろいろPerlとSQLのいろいろ
PerlとSQLのいろいろ
 
CodeIgniterによるPhwittr
CodeIgniterによるPhwittrCodeIgniterによるPhwittr
CodeIgniterによるPhwittr
 
Spring data-rest-and-spring-cloud-contract
Spring data-rest-and-spring-cloud-contractSpring data-rest-and-spring-cloud-contract
Spring data-rest-and-spring-cloud-contract
 
ソーシャルアプリ勉強会(第一回資料)配布用
ソーシャルアプリ勉強会(第一回資料)配布用ソーシャルアプリ勉強会(第一回資料)配布用
ソーシャルアプリ勉強会(第一回資料)配布用
 
Hadoop基盤上のETL構築実践例 ~多様なデータをどう扱う?~
Hadoop基盤上のETL構築実践例 ~多様なデータをどう扱う?~Hadoop基盤上のETL構築実践例 ~多様なデータをどう扱う?~
Hadoop基盤上のETL構築実践例 ~多様なデータをどう扱う?~
 
徳島OSS勉強会第四回 シラサギハンズオン 0925
徳島OSS勉強会第四回 シラサギハンズオン 0925徳島OSS勉強会第四回 シラサギハンズオン 0925
徳島OSS勉強会第四回 シラサギハンズオン 0925
 
ScalaMatsuri 2016
ScalaMatsuri 2016ScalaMatsuri 2016
ScalaMatsuri 2016
 
文字コードの脆弱性はこの3年間でどの程度対策されたか?
文字コードの脆弱性はこの3年間でどの程度対策されたか?文字コードの脆弱性はこの3年間でどの程度対策されたか?
文字コードの脆弱性はこの3年間でどの程度対策されたか?
 
WordBench Kobe jQueryどうでしょう
WordBench Kobe jQueryどうでしょうWordBench Kobe jQueryどうでしょう
WordBench Kobe jQueryどうでしょう
 
小さな開発会社でもできた、WordPress 新ビジネスの可能性 -WordCamp Kansai 2024-
小さな開発会社でもできた、WordPress 新ビジネスの可能性  -WordCamp Kansai 2024-小さな開発会社でもできた、WordPress 新ビジネスの可能性  -WordCamp Kansai 2024-
小さな開発会社でもできた、WordPress 新ビジネスの可能性 -WordCamp Kansai 2024-
 
テスト駆動開発の進化
テスト駆動開発の進化テスト駆動開発の進化
テスト駆動開発の進化
 

More from Shuhei Iitsuka

Online and offline handwritten chinese character recognition a comprehensive...
Online and offline handwritten chinese character recognition  a comprehensive...Online and offline handwritten chinese character recognition  a comprehensive...
Online and offline handwritten chinese character recognition a comprehensive...
Shuhei Iitsuka
 
Inferring win–lose product network from user behavior
Inferring win–lose product network from user behaviorInferring win–lose product network from user behavior
Inferring win–lose product network from user behavior
Shuhei Iitsuka
 
バリエーションの提示がもたらす長期的効果に着目したウェブサイト最適化手法 @第31回人工知能学会全国大会
バリエーションの提示がもたらす長期的効果に着目したウェブサイト最適化手法 @第31回人工知能学会全国大会バリエーションの提示がもたらす長期的効果に着目したウェブサイト最適化手法 @第31回人工知能学会全国大会
バリエーションの提示がもたらす長期的効果に着目したウェブサイト最適化手法 @第31回人工知能学会全国大会
Shuhei Iitsuka
 
Procedural modeling using autoencoder networks
Procedural modeling using autoencoder networksProcedural modeling using autoencoder networks
Procedural modeling using autoencoder networks
Shuhei Iitsuka
 
Generating sentences from a continuous space
Generating sentences from a continuous spaceGenerating sentences from a continuous space
Generating sentences from a continuous space
Shuhei Iitsuka
 
ウェブサイト最適化のためのバリエーション自動生成システム
ウェブサイト最適化のためのバリエーション自動生成システムウェブサイト最適化のためのバリエーション自動生成システム
ウェブサイト最適化のためのバリエーション自動生成システム
Shuhei Iitsuka
 
Improving the Sensitivity of Online Controlled Experiments by Utilizing Pre-E...
Improving the Sensitivity of Online Controlled Experiments by Utilizing Pre-E...Improving the Sensitivity of Online Controlled Experiments by Utilizing Pre-E...
Improving the Sensitivity of Online Controlled Experiments by Utilizing Pre-E...
Shuhei Iitsuka
 
Machine learning meets web development
Machine learning meets web developmentMachine learning meets web development
Machine learning meets web development
Shuhei Iitsuka
 
Python と Xpath で ウェブからデータをあつめる
Python と Xpath で ウェブからデータをあつめるPython と Xpath で ウェブからデータをあつめる
Python と Xpath で ウェブからデータをあつめる
Shuhei Iitsuka
 
リミックスからはじめる DTM 入門
リミックスからはじめる DTM 入門リミックスからはじめる DTM 入門
リミックスからはじめる DTM 入門
Shuhei Iitsuka
 
【DBDA 勉強会 2013 夏】Chapter 12: Bayesian Approaches to Testing a Point (‘‘Null’’...
【DBDA 勉強会 2013 夏】Chapter 12: Bayesian Approaches to Testing a Point (‘‘Null’’...【DBDA 勉強会 2013 夏】Chapter 12: Bayesian Approaches to Testing a Point (‘‘Null’’...
【DBDA 勉強会 2013 夏】Chapter 12: Bayesian Approaches to Testing a Point (‘‘Null’’...
Shuhei Iitsuka
 
Asia Trend Map: Forecasting “Cool Japan” Content Popularity on Web Data
Asia Trend Map: Forecasting “Cool Japan” Content Popularity on Web DataAsia Trend Map: Forecasting “Cool Japan” Content Popularity on Web Data
Asia Trend Map: Forecasting “Cool Japan” Content Popularity on Web Data
Shuhei Iitsuka
 
【DBDA 勉強会 2013 夏】Doing Bayesian Data Analysis Chapter 4: Bayes’ Rule
【DBDA 勉強会 2013 夏】Doing Bayesian Data Analysis Chapter 4: Bayes’ Rule【DBDA 勉強会 2013 夏】Doing Bayesian Data Analysis Chapter 4: Bayes’ Rule
【DBDA 勉強会 2013 夏】Doing Bayesian Data Analysis Chapter 4: Bayes’ Rule
Shuhei Iitsuka
 
UT Startup Gym で人生が変わった話
UT Startup Gym で人生が変わった話UT Startup Gym で人生が変わった話
UT Startup Gym で人生が変わった話
Shuhei Iitsuka
 
ウェブサイトで収益を得る
ウェブサイトで収益を得るウェブサイトで収益を得る
ウェブサイトで収益を得る
Shuhei Iitsuka
 
HTML で自己紹介ページをつくる
HTML で自己紹介ページをつくるHTML で自己紹介ページをつくる
HTML で自己紹介ページをつくる
Shuhei Iitsuka
 
ウェブサービスの企画とデザイン
ウェブサービスの企画とデザインウェブサービスの企画とデザイン
ウェブサービスの企画とデザイン
Shuhei Iitsuka
 
データベースを使おう
データベースを使おうデータベースを使おう
データベースを使おう
Shuhei Iitsuka
 
第3期キックオフ説明会+勉強会
第3期キックオフ説明会+勉強会 第3期キックオフ説明会+勉強会
第3期キックオフ説明会+勉強会
Shuhei Iitsuka
 
ペルソナシナリオとプロトタイプ
ペルソナシナリオとプロトタイプペルソナシナリオとプロトタイプ
ペルソナシナリオとプロトタイプ
Shuhei Iitsuka
 

More from Shuhei Iitsuka (20)

Online and offline handwritten chinese character recognition a comprehensive...
Online and offline handwritten chinese character recognition  a comprehensive...Online and offline handwritten chinese character recognition  a comprehensive...
Online and offline handwritten chinese character recognition a comprehensive...
 
Inferring win–lose product network from user behavior
Inferring win–lose product network from user behaviorInferring win–lose product network from user behavior
Inferring win–lose product network from user behavior
 
バリエーションの提示がもたらす長期的効果に着目したウェブサイト最適化手法 @第31回人工知能学会全国大会
バリエーションの提示がもたらす長期的効果に着目したウェブサイト最適化手法 @第31回人工知能学会全国大会バリエーションの提示がもたらす長期的効果に着目したウェブサイト最適化手法 @第31回人工知能学会全国大会
バリエーションの提示がもたらす長期的効果に着目したウェブサイト最適化手法 @第31回人工知能学会全国大会
 
Procedural modeling using autoencoder networks
Procedural modeling using autoencoder networksProcedural modeling using autoencoder networks
Procedural modeling using autoencoder networks
 
Generating sentences from a continuous space
Generating sentences from a continuous spaceGenerating sentences from a continuous space
Generating sentences from a continuous space
 
ウェブサイト最適化のためのバリエーション自動生成システム
ウェブサイト最適化のためのバリエーション自動生成システムウェブサイト最適化のためのバリエーション自動生成システム
ウェブサイト最適化のためのバリエーション自動生成システム
 
Improving the Sensitivity of Online Controlled Experiments by Utilizing Pre-E...
Improving the Sensitivity of Online Controlled Experiments by Utilizing Pre-E...Improving the Sensitivity of Online Controlled Experiments by Utilizing Pre-E...
Improving the Sensitivity of Online Controlled Experiments by Utilizing Pre-E...
 
Machine learning meets web development
Machine learning meets web developmentMachine learning meets web development
Machine learning meets web development
 
Python と Xpath で ウェブからデータをあつめる
Python と Xpath で ウェブからデータをあつめるPython と Xpath で ウェブからデータをあつめる
Python と Xpath で ウェブからデータをあつめる
 
リミックスからはじめる DTM 入門
リミックスからはじめる DTM 入門リミックスからはじめる DTM 入門
リミックスからはじめる DTM 入門
 
【DBDA 勉強会 2013 夏】Chapter 12: Bayesian Approaches to Testing a Point (‘‘Null’’...
【DBDA 勉強会 2013 夏】Chapter 12: Bayesian Approaches to Testing a Point (‘‘Null’’...【DBDA 勉強会 2013 夏】Chapter 12: Bayesian Approaches to Testing a Point (‘‘Null’’...
【DBDA 勉強会 2013 夏】Chapter 12: Bayesian Approaches to Testing a Point (‘‘Null’’...
 
Asia Trend Map: Forecasting “Cool Japan” Content Popularity on Web Data
Asia Trend Map: Forecasting “Cool Japan” Content Popularity on Web DataAsia Trend Map: Forecasting “Cool Japan” Content Popularity on Web Data
Asia Trend Map: Forecasting “Cool Japan” Content Popularity on Web Data
 
【DBDA 勉強会 2013 夏】Doing Bayesian Data Analysis Chapter 4: Bayes’ Rule
【DBDA 勉強会 2013 夏】Doing Bayesian Data Analysis Chapter 4: Bayes’ Rule【DBDA 勉強会 2013 夏】Doing Bayesian Data Analysis Chapter 4: Bayes’ Rule
【DBDA 勉強会 2013 夏】Doing Bayesian Data Analysis Chapter 4: Bayes’ Rule
 
UT Startup Gym で人生が変わった話
UT Startup Gym で人生が変わった話UT Startup Gym で人生が変わった話
UT Startup Gym で人生が変わった話
 
ウェブサイトで収益を得る
ウェブサイトで収益を得るウェブサイトで収益を得る
ウェブサイトで収益を得る
 
HTML で自己紹介ページをつくる
HTML で自己紹介ページをつくるHTML で自己紹介ページをつくる
HTML で自己紹介ページをつくる
 
ウェブサービスの企画とデザイン
ウェブサービスの企画とデザインウェブサービスの企画とデザイン
ウェブサービスの企画とデザイン
 
データベースを使おう
データベースを使おうデータベースを使おう
データベースを使おう
 
第3期キックオフ説明会+勉強会
第3期キックオフ説明会+勉強会 第3期キックオフ説明会+勉強会
第3期キックオフ説明会+勉強会
 
ペルソナシナリオとプロトタイプ
ペルソナシナリオとプロトタイプペルソナシナリオとプロトタイプ
ペルソナシナリオとプロトタイプ
 

Recently uploaded

論文紹介:BAM-DETR: Boundary-Aligned Moment Detection Transformer for Temporal Sen...
論文紹介:BAM-DETR: Boundary-Aligned Moment Detection Transformer for Temporal Sen...論文紹介:BAM-DETR: Boundary-Aligned Moment Detection Transformer for Temporal Sen...
論文紹介:BAM-DETR: Boundary-Aligned Moment Detection Transformer for Temporal Sen...
Toru Tamaki
 
論文紹介:Task-aligned Part-aware Panoptic Segmentation through Joint Object-Part ...
論文紹介:Task-aligned Part-aware Panoptic Segmentation through Joint Object-Part ...論文紹介:Task-aligned Part-aware Panoptic Segmentation through Joint Object-Part ...
論文紹介:Task-aligned Part-aware Panoptic Segmentation through Joint Object-Part ...
Toru Tamaki
 
最速の組織を目指して全社で大規模スクラムを導入してみた話 #dxd2024 #medicalforce
最速の組織を目指して全社で大規模スクラムを導入してみた話 #dxd2024 #medicalforce最速の組織を目指して全社で大規模スクラムを導入してみた話 #dxd2024 #medicalforce
最速の組織を目指して全社で大規模スクラムを導入してみた話 #dxd2024 #medicalforce
chisatotakane
 
"ros2rapper", Hardware implimentation of ROS2 communication Protocol without ...
"ros2rapper", Hardware implimentation of ROS2 communication Protocol without ..."ros2rapper", Hardware implimentation of ROS2 communication Protocol without ...
"ros2rapper", Hardware implimentation of ROS2 communication Protocol without ...
たけおか しょうぞう
 
【AI論文解説】LLMの事前学習をvisionに適用する手法Autoregressive Image Models
【AI論文解説】LLMの事前学習をvisionに適用する手法Autoregressive Image Models【AI論文解説】LLMの事前学習をvisionに適用する手法Autoregressive Image Models
【AI論文解説】LLMの事前学習をvisionに適用する手法Autoregressive Image Models
Sony - Neural Network Libraries
 
Kyndryl Developer Services のご紹介 2024年7月
Kyndryl Developer Services のご紹介  2024年7月Kyndryl Developer Services のご紹介  2024年7月
Kyndryl Developer Services のご紹介 2024年7月
Takayuki Nakayama
 
Matsuo-Iwasawa lab. Research Unit Introduction
Matsuo-Iwasawa lab. Research Unit IntroductionMatsuo-Iwasawa lab. Research Unit Introduction
Matsuo-Iwasawa lab. Research Unit Introduction
Matsuo Lab
 
Imitation learning for robotics 勉強会資料(20240701)
Imitation learning for robotics 勉強会資料(20240701)Imitation learning for robotics 勉強会資料(20240701)
Imitation learning for robotics 勉強会資料(20240701)
Natsutani Minoru
 
【AI論文解説】クラスタリングベースアプローチによる大規模データセット自動キュレーション
【AI論文解説】クラスタリングベースアプローチによる大規模データセット自動キュレーション【AI論文解説】クラスタリングベースアプローチによる大規模データセット自動キュレーション
【AI論文解説】クラスタリングベースアプローチによる大規模データセット自動キュレーション
Sony - Neural Network Libraries
 
Matsuo-Iwasawa Lab. | Research unit Introduction
Matsuo-Iwasawa Lab. | Research unit IntroductionMatsuo-Iwasawa Lab. | Research unit Introduction
Matsuo-Iwasawa Lab. | Research unit Introduction
Matsuo Lab
 
LoRaWAN AI Image Sensorエンドデバイス AIG01カタログ
LoRaWAN AI Image Sensorエンドデバイス AIG01カタログLoRaWAN AI Image Sensorエンドデバイス AIG01カタログ
LoRaWAN AI Image Sensorエンドデバイス AIG01カタログ
CRI Japan, Inc.
 
Matsuo-Iwasawa Lab. Research unit Introduction
Matsuo-Iwasawa Lab. Research unit IntroductionMatsuo-Iwasawa Lab. Research unit Introduction
Matsuo-Iwasawa Lab. Research unit Introduction
Matsuo Lab
 

Recently uploaded (12)

論文紹介:BAM-DETR: Boundary-Aligned Moment Detection Transformer for Temporal Sen...
論文紹介:BAM-DETR: Boundary-Aligned Moment Detection Transformer for Temporal Sen...論文紹介:BAM-DETR: Boundary-Aligned Moment Detection Transformer for Temporal Sen...
論文紹介:BAM-DETR: Boundary-Aligned Moment Detection Transformer for Temporal Sen...
 
論文紹介:Task-aligned Part-aware Panoptic Segmentation through Joint Object-Part ...
論文紹介:Task-aligned Part-aware Panoptic Segmentation through Joint Object-Part ...論文紹介:Task-aligned Part-aware Panoptic Segmentation through Joint Object-Part ...
論文紹介:Task-aligned Part-aware Panoptic Segmentation through Joint Object-Part ...
 
最速の組織を目指して全社で大規模スクラムを導入してみた話 #dxd2024 #medicalforce
最速の組織を目指して全社で大規模スクラムを導入してみた話 #dxd2024 #medicalforce最速の組織を目指して全社で大規模スクラムを導入してみた話 #dxd2024 #medicalforce
最速の組織を目指して全社で大規模スクラムを導入してみた話 #dxd2024 #medicalforce
 
"ros2rapper", Hardware implimentation of ROS2 communication Protocol without ...
"ros2rapper", Hardware implimentation of ROS2 communication Protocol without ..."ros2rapper", Hardware implimentation of ROS2 communication Protocol without ...
"ros2rapper", Hardware implimentation of ROS2 communication Protocol without ...
 
【AI論文解説】LLMの事前学習をvisionに適用する手法Autoregressive Image Models
【AI論文解説】LLMの事前学習をvisionに適用する手法Autoregressive Image Models【AI論文解説】LLMの事前学習をvisionに適用する手法Autoregressive Image Models
【AI論文解説】LLMの事前学習をvisionに適用する手法Autoregressive Image Models
 
Kyndryl Developer Services のご紹介 2024年7月
Kyndryl Developer Services のご紹介  2024年7月Kyndryl Developer Services のご紹介  2024年7月
Kyndryl Developer Services のご紹介 2024年7月
 
Matsuo-Iwasawa lab. Research Unit Introduction
Matsuo-Iwasawa lab. Research Unit IntroductionMatsuo-Iwasawa lab. Research Unit Introduction
Matsuo-Iwasawa lab. Research Unit Introduction
 
Imitation learning for robotics 勉強会資料(20240701)
Imitation learning for robotics 勉強会資料(20240701)Imitation learning for robotics 勉強会資料(20240701)
Imitation learning for robotics 勉強会資料(20240701)
 
【AI論文解説】クラスタリングベースアプローチによる大規模データセット自動キュレーション
【AI論文解説】クラスタリングベースアプローチによる大規模データセット自動キュレーション【AI論文解説】クラスタリングベースアプローチによる大規模データセット自動キュレーション
【AI論文解説】クラスタリングベースアプローチによる大規模データセット自動キュレーション
 
Matsuo-Iwasawa Lab. | Research unit Introduction
Matsuo-Iwasawa Lab. | Research unit IntroductionMatsuo-Iwasawa Lab. | Research unit Introduction
Matsuo-Iwasawa Lab. | Research unit Introduction
 
LoRaWAN AI Image Sensorエンドデバイス AIG01カタログ
LoRaWAN AI Image Sensorエンドデバイス AIG01カタログLoRaWAN AI Image Sensorエンドデバイス AIG01カタログ
LoRaWAN AI Image Sensorエンドデバイス AIG01カタログ
 
Matsuo-Iwasawa Lab. Research unit Introduction
Matsuo-Iwasawa Lab. Research unit IntroductionMatsuo-Iwasawa Lab. Research unit Introduction
Matsuo-Iwasawa Lab. Research unit Introduction
 

ウェブから情報をあつめる

  • 2. UT Startup Gym とは? アイデアをカタチにするプログラム プロジェクト 企画から実装まで スタートアップ 2012/12/11 2 UT Startup Gym
  • 3. スケジュール Keywords: • プログラミング入門 ソーシャルウェブアプリケーション, API, Oct, 12 bot, HTML5 • プラニング リーンスタートアップ, ビジネスプラニン Nov, 12 • プロジェクトスタート グ, HTML, CSS, PHP, javascript • 開発開始 Dec, 12 • 冬季開発合宿 チーム結成, 企画, ディスカッション git, フレームワーク, MySQL, Apache • ウェブデザイン Jan, 13 • 週間報告会 シナリオ, ペルソナ, ワイヤフレーム, サイトマップ, DB スキーム • jQuery, 中間発表 Feb, 13 ゲーミフィケーション, 仮説検証, データマ イニング, アクセシビリティ • 作業会 Mar, 13 レスポンシブデザイン, プレゼンテーショ • リリース会 ン Apr, 13 2012/12/11 3 UT Startup Gym
  • 4. M D 講師(敬称略) タイトル 要素 10 13 飯塚 かんたん Facebook アプリをつくる HTML, CSS, js 21 飯塚 かんたん Twitter アプリをつくる UNIX, vim, PHP 27 川上 かんたん アンケートフォームをつくる MySQL, MVC 11 4 AWS 高山様 サーバを立てよう AWS 10 飯塚・石村 スタートアップの心構え ビジネスプラン、リーンスタートアップ 17 飯塚・佐藤 プロダクトデザイン シナリオ、ペルソナ、ワイヤフレーム 24 お休み(飯塚@ジャカルタ) 12 1 ゆーすけべー様 ウェブサービスの企画のコツ 企画プロセス、ウェブサービス運用 8 飯塚 ウェブから情報をあつめる クローラ, XPath, 正規表現 15 プロジェクトキックオフ アンカンファレンス 22 ハッカソン 1 12 石村 ユーザがハマるアプリデザイン ゲーミフィケーション 19 飯塚 かんたん・きれい・便利なウェブデザイン Twitter Bootstrap, Responsive Design, LESS 26 未定 Git 2 2 斎藤 アニメーションをつくる javascript, jQuery 9 ゲスト ゲストスピーカー 16 中間発表 3 作業会 4 13 プレゼンテーション 20 リリース会 2012/12/11 4 UT Startup Gym
  • 5. 目次 • イントロダクション • ソースコードを取ってくる – PHP file_get_contents($url) • HTML を解析する – 正規表現 – XPath • 自動的で動かす – cron 2012/12/11 5 UT Startup Gym
  • 6. クローラってなに? • 自動的にウェブページにアクセスし、データを 収集するプログラム。ロボットとも言う。 • これを走らせることを「クローリング」とい う。 • スクレイピング=HTMLを解析して、必要な情 報を抜き出すこと。 2012/12/11 6 UT Startup Gym
  • 8. Spysee 2012/12/11 8 UT Startup Gym
  • 9. Bijostagram 2012/12/11 9 UT Startup Gym
  • 10. ソースコードを取ってくる • とりあえず名言ページを題材に file_get_contents() の使い方に慣れる 2012/12/11 10 UT Startup Gym
  • 11. ソースコードを取ってくる1 <? $url = "http://www.meigensyu.com/quotations/view/random"; $html = file_get_contents($url); echo $html; 2012/12/11 11 UT Startup Gym
  • 12. ソースコードを取ってくる2 <? $url = "http://www.meigensyu.com/quotations/view/random/"; $html = file_get_contents($url); preg_match('/<div class="text">(.+)</div‟>/', $html, $match); var_dump($match); 2012/12/11 12 UT Startup Gym
  • 13. 正規表現 • 任意の文字列に対して、指定したパターンに マッチしているかを試す • パーサーではないので、構造を持ったデータに は弱い • 構造を持たないフラットなデータに良い。 – トークナイザ – バリデータ 2012/12/11 13 UT Startup Gym
  • 14. 正規表現の例 • ^d+$ → 1234 とか 39843452 にマッチ。12 324 とか ff0000 とかにはマッチしない。 – ^: 行頭 – d: 半角数字 – +: 1回以上の繰り返し – $: 行末 • ^[A-Z]*(d+)$ → 13 とか ADB1132 にマッチ。し かも、13 とか 1132 が抜き出せる。 – *: 0回以上の繰り返し – (): 抜き出す 2012/12/11 14 UT Startup Gym
  • 15. HTML を解析する1 • NAVER まとめの記事ページから、写真の URL だけを収集する • とりあえず単一ページで動作 2012/12/11 15 UT Startup Gym
  • 16. HTML を解析する1 <? $url = "http://matome.naver.jp/odai/2133765614325689001"; $res = file_get_contents($url); $dom = @DOMDocument::loadHTML($res); $xml = simplexml_import_dom($dom); $imgs = $xml->xpath("//img[@class='MTMItemThumb']"); foreach ($imgs as $img) { echo $img["src"]."n"; //echo "<img src='".$img["src"]."'>n"; } 2012/12/11 16 UT Startup Gym
  • 17. XPath • XML や HTML の任意の位置を取得するための式 – プログラミング言語に依らない • XPath エンジンがあれば、XPath を指定して HTML 上の値を簡単に持って来ることができる 2012/12/11 17 UT Startup Gym
  • 18. XPath の例 • //img[@class=„MTMItemThumb‟] →class属性の値が„MTMItemThumb‟の img 要素 – // は /html/body の短縮形 – @ は属性のこと (@id=, @src=, @href= etc.) • 他にも、様々な表現方法がある 2012/12/11 18 UT Startup Gym
  • 19. ブラウザで表示する 生成された HTML ファイルをブラウザで表示してみよう。 //echo $img[“src”].“n”; echo “<img src=„”.$img[“src”].“‟>n”; $ php hoge.php > piyo.html 2012/12/11 19 UT Startup Gym
  • 21. HTML を解析する2 <? $url = 食べログ検索結果の URL; $res = file_get_contents($url); $dom = @DOMDocument::loadHTML($res); $xml = simplexml_import_dom($dom); $shops = $xml->xpath("//li[contains(@class,'rank')]"); foreach ($shops as $shop) { $name = $shop->div[0]->div[0]->div[0]->strong[0]->a; echo "Shop Name: $namen"; echo "URL: ".$name["href"]."n"; $rank = $shop->div[2]->div[0]->p[0]->em; echo "Rank: $ranknn"; } 2012/12/11 21 UT Startup Gym
  • 22. HTML を解析する3 • アルク 英辞郎 • 英単語の難度、発音を知りたい • 普通にやると、詰まる – User Agent で制限をかけている ※このコードが実行できない場合、PHP むけ cURL をインストールすること。 $ sudo apt-get install php5-curl 2012/12/11 22 UT Startup Gym
  • 23. HTML を解析する3(できない) <? if (isset($argv[1])) { $query = $argv[1]; $res = file_get_contents("http://eow.alc.co.jp/$query/UTF-8/"); // ブラウザでは見られるのに、ソースコードを取得できない $dom = @DOMDocument::loadHTML($res); $xml = simplexml_import_dom($dom); $properties = $xml->xpath('//span[@class="label" and .= "【@】" ]/following-sibling::text()[1]'); if (!empty($properties)) { $prop_array = explode("、", $properties[0]); echo "[".$query."] レベル: ".$prop_array[0]." ヨミ: ".$prop_array[1]."n"; } else { echo "結果を取得できませんでした。正しい英単語を入力してください。n"; } } 2012/12/11 23 UT Startup Gym
  • 24. HTML を解析する3(できる) <? if (isset($argv[1])) { $query = $argv[1]; $doc = new DOMDocument(); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "http://eow.alc.co.jp/$query/UTF-8/"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); //標準出力でなく、文字列として取得 curl_setopt($ch, CURLOPT_USERAGENT, “Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20041001 Firefox/0.10.1” ); //Firefox のふりをしてアクセス $res = curl_exec($ch); curl_close($ch); $dom = @DOMDocument::loadHTML($res); $xml = simplexml_import_dom($dom); $properties = $xml->xpath('//span[@class="label" and .= "【@】" ]/following-sibling::text()[1]'); if (!empty($properties)) { $prop_array = explode("、", $properties[0]); echo "[".$query."] レベル: ".$prop_array[0]." ヨミ: ".$prop_array[1]."n"; } else { echo "結果を取得できませんでした。正しい英単語を入力してください。n"; } } else { echo "検索する英単語を入力してください。n"; } 2012/12/11 24 UT Startup Gym
  • 25. HTML を解析する4 • NAVER まとめふたたび • このままだと、1ページ目しか収集できない • 自動で次ページの収集もできないか? 2012/12/11 25 UT Startup Gym
  • 26. HTML を解析する4 if (isset($argv[1])) { if (preg_match("/http://matome.naver.jp/odai/(d+)$/", $argv[1])) { $url = $argv[1]; $res = @file_get_contents($url); while ($res) { $data = getData($res); foreach ($data["image"] as $image) { echo "<img src='".$image["src"]."'>n"; } if (!$data["nextPage"]) { $res = null; } else { $res = @file_get_contents($url."?page=".$data["nextPage"]); } sleep(1); } } } つづく... 2012/12/11 26 UT Startup Gym
  • 27. HTML を解析する4 function getData ($html) { $dom = @DOMDocument::loadHTML($html); $xml = simplexml_import_dom($dom); $result["image"] = $xml->xpath("//img[@class='MTMItemThumb']"); $pager = $xml->xpath("//div[@class='MdPagination03']"); $result["nextPage"] = null; if (!empty($pager)) { $last_anchor = $pager[0]->a[count($pager[0]->a)-1]; $current_page = $pager[0]->strong; if ($last_anchor + 1 != $current_page) { $result["nextPage"] = $current_page + 1; } } return $result; } 2012/12/11 27 UT Startup Gym
  • 28. cron • 定期的にプログラムを実行 • とても簡単 • コマンドラインで動くプログラムをその まま使える 2012/12/11 28 UT Startup Gym
  • 29. cron $ vim crontab.txt # フルパスで記述すること # 毎日 4 時 12 分に実行 12 4 * * * php /home/user/crawl_user_page.php # 毎分実行 * * * * * php /home/user/crawl_top_page.php >>/home/user/log.txt $ crontab < crontab.txt # ジョブの登録 $ crontab –l # 登録されたジョブの確認 $ crontab –e # ジョブの編集 $ crontab –r # ジョブの全消去 2012/12/11 29 UT Startup Gym
  • 30. 自動でプログラムを動かす <? $article = getRSS(); $res = @file_get_contents($article->link); while ($res) { $data = getData($res); foreach ($data["image"] as $image) { echo "<img src='".$image["src"]."'>n"; } if (!$data["nextPage"]) { $res = null; } else { $res = @file_get_contents($url."?page=".$data["nextPage"]); } sleep(1); } つづく... 2012/12/11 30 UT Startup Gym
  • 31. 自動でプログラムを動かす function getData ($html) { $dom = @DOMDocument::loadHTML($html); $xml = simplexml_import_dom($dom); $result["image"] = $xml->xpath("//img[@class='MTMItemThumb']"); $pager = $xml->xpath("//div[@class='MdPagination03']"); $result["nextPage"] = null; if (!empty($pager)) { $last_anchor = $pager[0]->a[count($pager[0]->a)-1]; $current_page = $pager[0]->strong; if ($last_anchor + 1 != $current_page) { $result["nextPage"] = $current_page + 1; } } return $result; } つづく... 2012/12/11 31 UT Startup Gym
  • 32. 自動でプログラムを動かす function getRSS() { $xml = simplexml_load_file("http://matome.naver.jp/feed/topic/1Luvh"); $items = array(); foreach ($xml->channel->item as $item) { $items[] = $item; } shuffle($items); return $items[0]; } 2012/12/11 32 UT Startup Gym
  • 33. ワーク • 何かできそうな気がして来ませんか? • 自分が面白そうと思うサイトから情報を集めて くる。 • 複数サイトからの情報を組み合わせていると GOOD。(マッシュアップ) 2012/12/11 33 UT Startup Gym