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




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 - dots0729s. 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とSPARQLTaisuke 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 2017tnoulas
 
Aprendizaje Basado en Proyectos. ABP
Aprendizaje Basado en Proyectos. ABPAprendizaje Basado en Proyectos. ABP
Aprendizaje Basado en Proyectos. ABPCoral Elizondo
 
las tres r de la ecologia
las tres r de la ecologialas tres r de la ecologia
las tres r de la ecologiadulcecandymiss
 
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 CommunicationsFarra 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 2017Capgemini
 
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 TwitterSteve 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 InterviewsGood 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 DeductionsWagepoint
 
Rubyで作るクローラー Ruby crawler
Rubyで作るクローラー Ruby crawlerRubyで作るクローラー Ruby crawler
Rubyで作るクローラー Ruby crawlerTakuro 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 - 実践SmalltalkSho 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 systemMarna 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 勉強会 #2Atsuo Yamasaki
 
PerlとSQLのいろいろ
PerlとSQLのいろいろPerlとSQLのいろいろ
PerlとSQLのいろいろTakuya Tsuchida
 
CodeIgniterによるPhwittr
CodeIgniterによるPhwittrCodeIgniterによるPhwittr
CodeIgniterによるPhwittrkenjis
 
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-contractTakeshi Ogawa
 
ソーシャルアプリ勉強会(第一回資料)配布用
ソーシャルアプリ勉強会(第一回資料)配布用ソーシャルアプリ勉強会(第一回資料)配布用
ソーシャルアプリ勉強会(第一回資料)配布用Yatabe Terumasa
 
Hadoop基盤上のETL構築実践例 ~多様なデータをどう扱う?~
Hadoop基盤上のETL構築実践例 ~多様なデータをどう扱う?~Hadoop基盤上のETL構築実践例 ~多様なデータをどう扱う?~
Hadoop基盤上のETL構築実践例 ~多様なデータをどう扱う?~Sotaro Kimura
 
徳島OSS勉強会第四回 シラサギハンズオン 0925
徳島OSS勉強会第四回 シラサギハンズオン 0925徳島OSS勉強会第四回 シラサギハンズオン 0925
徳島OSS勉強会第四回 シラサギハンズオン 0925Yu Ito
 
文字コードの脆弱性はこの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 behaviorShuhei 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 networksShuhei Iitsuka
 
Generating sentences from a continuous space
Generating sentences from a continuous spaceGenerating sentences from a continuous space
Generating sentences from a continuous spaceShuhei 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 developmentShuhei 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 DataShuhei 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’ RuleShuhei 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

Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directoryosamut
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000Shota Ito
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxAtomu Hidaka
 
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdffurutsuka
 

Recently uploaded (9)

Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
 
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdf
 

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

  • 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