cakephp でキュレーション httpsocket の使い方

2014年12月10日更新 view: 776 view
photoBy: http://lohas.nicoseiga.jp/thumb/2154208i?13406093…

キュレーションって何?

コンテンツを盗む(パク)ること。
それをcakephpを使ってギンギンにやってみよう。

メリット

  • 勝手に情報を集めてくれる
  • ログインしなきゃ見れない情報でもパクってこれる
  • さらにはDBに保存してオリジナルコンテンツとして公開できる

あくまで法律に触れない範囲でね。

最強のcakephpライブラリ http socket

まずは、コンテンツを 拾ってくる

phpでコンテンツを拾って表示させる方法。

すべて array() を [] に変えてるので適宜変更して下さい。

普通にデータを取得

App::uses('HttpSocket', 'Network/Http');
$HttpSocket = new HttpSocket();
$response = $HttpSocket->get('http://cakephp.org');

post で データを取得

key というのに value をセットして送信後、その結果を取得。

App::uses('HttpSocket', 'Network/Http');
$HttpSocket = new HttpSocket();
$response = $HttpSocket->post('http://cakephp.org', ['key' => 'value']);

basic認証しつつ取得

App::uses('HttpSocket', 'Network/Http');
$HttpSocket = new HttpSocket();
$HttpSocket->configAuth('Basic', 'username', 'password');
$response = $HttpSocket->get('http://cakephp.org');

ログインが必要なサイトにクッキーを指定しつつ取得

$HttpSocket = new HttpSocket();
  $response = $HttpSocket->request(array(
   'uri' => 'http://cakephp.org',
   'cookies' => array(
    'sid' => '39h2c8n018d0v72dul3jlh21f846',
    'COOKIE[hoge_member]' => '1',
    'insentive' => '0',
    'COOKIE[user_no]' => '214774481',
    'COOKIE[user_name]' => 'taro',
    'mid' => '217474181',
    'af_id' => '217477481',
    'memail' => 'm1764',
   )
  ));

配列の場合は COOKIE[user_name] ってな感じで指定する。
連想配列だとバグる。

また、指定サイトでどのようなクッキーが使われているかを確認するには、
Cookie情報をWEBブラウザーで表示する方法

スポンサードリンク

現在参照しているページに書き込まれているCookie情報を見たいときってありますよね。
そんな場合はWEBブラウザーのURL欄に

javascript:document.cookie;

と入力する。 chrome の場合はコピペすると javascript: が消えるので、手入力する。

プロキシを通す

App::uses('HttpSocket', 'Network/Http');
$HttpSocket = new HttpSocket();
$HttpSocket->configProxy('proxy-host-or-ip.com', 3128, 'Basic', 'proxyusername', 'proxypassword') {
$response = $HttpSocket->get('http://cakephp.org');

UA偽装

App::uses('HttpSocket', 'Network/Http');
$HttpSocket = new HttpSocket();
$html = $HttpSocket->request([
'uri'    => 'http://yahoo.co.jp',
'header' => [
'User-Agent' => 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36'
]
]);

その他の使い方

<?php
/* User Agent */
$response = $HttpSocket->request([
    'uri'    => 'http://cakephp.org',
    'header' => [
        'User-Agent' => 'Internet Explorer 6 HAHA'
    ]
]);

/* PUT request */
$response = $HttpSocket->put('http://cakephp.org', ['key' => 'value']);

/* Alternative PUT/DELETE/PATCH/HEAD request */
$response = $HttpSocket->request([
    'method' => 'HEAD',
    'uri'    => 'http://cakephp.org'
]);

/* Follow redirects */
$response = $HttpSocket->request([
    'uri'     => 'http://cakephp.org',
    'redirect' => true                    // or an integer for max amount of redirects
]);
?>

さらに htmldom と併用すればキュレーションが完了します。

simple_html_dom 使い方

http://www.matomater.com/15650/

スポンサードリンク

関連記事

関連カテゴリ

コロ助

web関連の記事や制作系の記事をどんどんまとめていきます。 宜しくお願いします!

ピックアップ

パソコン・ソフトウェア ランキング

3月24日 ( 金 ) にアクセスが多かった記事はこちら!