この記事はブロックされています。続きを読みたい方はログインをして下さい。会員ではない方は新規会員登録をして下さい。


ワードプレス×ツイッターによる無料でできるオートブログ 第二十一回目 アフィリエイト広告を自動で作成し稼ぐ方法 その3

今回はPHPでインフォトップにアクセスする方法です。実はこの方法はボット作りの基本にもなります。
かなり役に立つテクニックなので是非憶えて下さい。
考え方としてはPHPで特定のURLにアクセスし、ゲットしたHTMLを解析します。
フォームがあればフォームに値を渡し、送信結果をHTMLで受け取り再び解析する、という繰り返しです。
この方法を覚えれば、PHPを使いネットのあらゆる情報にアクセスできます(多分)

難しいのはHTMLの解析です。HTMLというのはタグで構成されているので、そのタグを解析しなければなりません。
ページによってHTMLの構成は変わってきます。何文字に○○がある、というものではなく、予測がつきません。
決め打ちで特定の文字列を取得する、というわけには行かないのが難しいところです。

でも、安心して下さい。HTMLの解析には無料のライブラリがあります。
「PHP Simple HTML DOM Parser」というライブラリで、DOMパーサー(解析)という名の通りHTMLの構文を解析してくれます。
DOMというのはDocument Object Modelの略で、HTMLやXMLの各要素、たとえば<p>とか<img>とかそういった類の要素にアクセスする仕組みのこと です。このDOMを操作することによって、要素の値をダイレクトに操作することができます。
最近人気のJQUERYもDOM操作が簡単にできるのがウリですよね。
まず「PHP Simple HTML DOM Parser」をダウンロードします。

[browser-shot width=”600″ url=”http://sourceforge.net/projects/simplehtmldom/files/”]

▼PHP Simple HTML DOM Parser

A simple PHP HTML DOM parser written in PHP5+, supports invalid HTML, and provides a very

画面中央あたりにあるzipファイルをダウンロードして下さい。
2013年12月21日現在ではバージョンが1.5となっています。

ダウンロードして解凍すると、いくつかのファイルが出てきます。
このファイルを自分が作成したPHPのファイルと同じ場所にアップロードします。

使う時にはPHPの冒頭にライブラリの読み込みを宣言するだけです。

[note]require_once ‘simple_html_dom.php’;[/note]

では試しにテストプログラムを作ってみましょう。
自分のサーバーにどこでもいいので「htmlGet」というフォルダを作って下さい。
このフォルダの中に解凍した「PHP Simple HTML DOM Parser」のファイルを全てアップロードします。
サーバーによってパーミッションの変更が必要な場合は適宜行って下さい。

最初に作るテストプログラムは特定のURLにアクセスして、画像とリンクを取得するというものです。
まずは入力画面を作ります。ファイル名は「sample1.html」として下さい。
文字コードはUTF-8で保存して「htmlGet」のフォルダにアップロードします。

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>HTML取得テスト</title>
</head>
<body>
	<h1>HTML取得テスト</h1>
	<p>下の入力フォームにURLを入力し、[ 取得 ] ボタンを押してください。</p>

	<form action="htmlGet.php" method="POST">
		<input type="text" id="url" name="url" size="50" value="" />
		<input type="submit" id="submit" name="submit" value="取得" />
	</form>
</body>
</html>

次にPHPの本体プログラムを作ります。ファイル名は「htmlGet.php」として下さい。
同じく文字コードはUTF-8で保存して「htmlGet」のフォルダにアップロードします。

<?php

//PHP Simple HTML DOM Parserのライブラリ読み込み
require_once 'simple_html_dom.php';

//PHP Simple HTML DOM Parserの使い方
// 文字列の場合
//$html = str_get_html( '<html><body>Hello!</body></html>' );
// URLの場合
//$html = file_get_html( 'http://example.com/' );
// HTMLファイルから直接読み込む場合
//$html = file_get_html( 'test.htm' );

//フォームからURLを取得
$url = $_POST[ "url" ];

//フォームから取得したURLにアクセスしてHTML情報を取得
$html = file_get_html( $url );

//全ての画像を抽出する
foreach( $html->find( 'img' ) as $element)
{
	echo '<img src="' . $element->src . '"><br>';
}

//全てのリンクを抽出する
foreach( $html->find( 'a' ) as $element )
{
	echo '<a href="' . $element->href . '">' . $element->href . '</a><br>'; 
}

?>

処理の説明はコメントに分かりやすく記述してあるので参考にして下さい。
ポイントを説明します。以下のように書くだけで指定したURLにアクセスをし結果を取得してくれます。

[note]$html = file_get_html( ‘http://example.com/’ );[/note]

特定の要素(タグ)を検索するには、「$html->find( ‘img’ )」のように記述します。

「’img’」でイメージタグだけを全て検索してくれます。ループ文で全てのイメージタグをチェックできます。
たったこれだけで要素が検索できるというのが凄いですね。考え方はJQUERYのDOMセレクタにとても似ています。

[note]$html->find( ‘タグ名’ )[/note]

では試しにプログラムを動かしてみましょう。
ブラウザから「htmlGet」「sample1.html」にアクセスしてみてください。
サンプルとして私のサンプルを紹介しておきます。
例えば「http://yahoo.co.jp/」と入力するとヤフーのトップページにアクセスして画像とリンクを取得してきます。

▼HTML取得テスト

HTML取得テスト
HTML取得テスト
HTML取得結果
HTML取得結果

ここまではOKでしょうか?
次に進みます。しかし、このままでは単にアクセスしてページを取得してくるだけなのでブラウザで見るのと変わりがありません。
次はフォームに入力して結果を取得します。これができればログインや検索、ブログ投稿もできることになります。

実験としてPHPからPHPへフォームの内容をPOST送信をして受け取ってみます。
ファイル名は「sample2.html」としてUTF-8で保存します。
一箇所だけ書き換えるところがあります。

「http://lesson-school.com/wp-content/lesson/autoblog/htmlGet/sample2.php」のパスなのですが、私のサーバーのパスとなっているので、自分のサーバーのパスに書き換え下さい。

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>フォーム送信テスト</title>
</head>
<body>
	<h1>フォーム送信テスト</h1>
	<p>下の入力フォームにキーワードを入力し、[ 取得 ] ボタンを押してください。</p>

	<form action="postTest.php" method="POST">
		キーワード : <input type="text" id="keyword" name="keyword" size="50" value="" /><br />
		URL : <input type="text" id="url" name="url" value="http://lesson-school.com/wp-content/lesson/autoblog/htmlGet/sample2.php" />
		<input type="submit" id="submit" name="submit" value="取得" />
	</form>
</body>
</html>

次にフォーム送信をするPHPファイルを作成します。
ファイル名は「postTest.php」としてUTF-8で保存します。

<?php

//フォームから値を取得
$url		= $_POST[ "url" ];
$keyword	= $_POST[ "keyword" ];

$data = array
(
	'keyword' => $keyword,
);

$headers = array
(
	//ユーザエージェントの指定
	'User-Agent : My Agent',
);

$options = array( 'http' => array
(
	'method'	=> 'POST',
	'content'	=> http_build_query( $data ),
	'header'	=> implode( "rn", $headers ),
));

//フォームを送信する
$contents = file_get_contents( $url, false, stream_context_create( $options ) );

//UTF-8にエンコード
$contents = mb_convert_encoding( $contents , 'UTF-8' , 'auto' );

echo $contents;

?>

次に、送信されたPOSTデータを受信するためのPHPを作成します。
ファイル名は「sample2.php」としてUTF-8で保存します。

<?php

//フォームから値を取得
$url		= $_POST[ "url" ];
$keyword	= $_POST[ "keyword" ];

echo $keyword;

?>

流れとしては「sample2.html」で入力されたキーワードの値を「postTest.php」でPOST送信し「sample2.php」で受信し画面に表示します。

▼sample2.htmlのサンプル

入力したキーワードがちゃんと表示されていればPOST送信できていることになります。
ここまではOKでしょうか?

次に進みます。

しかし、このままでは単にアクセスしてページを取得してくるだけなのでブラウザで見るのと変わりがありません。
次はインフォトップにアクセスして商材情報を取得します。
ただ残念なことに色々と試してみたのですが、インフォトップで売れる商材はかなり偏っています。
調べてみたら、特定のキーワードで検索して出てきた商品情報を取得して広告として出す、という方法がうまくいかない場合がある気がします。理由としては情報の陳腐化が早いためでしょう。もう1つは売上を支えているのは信者であり、自己アフィリが多いためです。

つ まり、普通にサイトに広告表示しておいて売れる商品と、商材提供元がメルマガやブログ、SNSで煽って売れる商品というのは全く異なる、ということです。 サイトにふらっとやってきた人がいきなり情報商材に2万~3万支払うということは中々ないと思います。インフォトップの売上を支えているのは上位ランキンググループであり、その他の商材のほとんどは埋もれています。

ぶっちゃけ、普通にサイトに広告表示しておいて売れる商品というのはあまりありません。
なので、結局のところセールスレターというか商品購入ページの作り込みが上手い=ランキング上位の商材を狙うのが無難のようです。

というわけで、インフォトップのランキングページにアクセスし、プルダウンボックスからジャンルを選択し、ランキング情報をぶっこぬきます。

▼インフォトップランキング情報

インフォトップは、アフィリエイトサービスを備えたネット通販サイトです。アフィリエイトはもちろん商品販売・購入も簡単無料登録で今すぐ始められます。
インフォトップランキング
インフォトップランキング

まずはテスト用フォームを作ります。
ファイル名は「infotopRanking.html」としてUTF-8で保存します。

関連記事