PHPを使った初歩的な情報収集(Web spider)

<h2>ご挨拶</h2>
<p>おはようございます。今日からQiitaを始めました、CHENです。Qiitaにどんな記事を書くのはまだ決めっていないですが、とにかく手を動かしながら、考えます。</p>
<h2>Web Spiderについて</h2>
<h3>概念</h3>
<p>Web Spiderとはプログラミングされた自動情報収集のプログラムと認識して頂くと良いと思います。サーチエンジンのベースとなるスキルとも言えます。</p>
<h3>原理</h3>
<p>Web Spiderは、プログラムからサーバーに請求を送って、サーバーから情報貰い、その情報をクリーニングした後、欲しい情報だけを、自分のDBやパソコンに保存するプロセスです。</p>
<h3>ツール</h3>
<p>Java、Python、PHPなど、Web Spiderができる言語は非常に多いです。言語の間では、大きな違いはあまりないと考えます。</p>
<p>ただし、Web Spiderを使って、収集した情報をリアルタイムで自分のサイトに載せる場合に限って、PHPは使いやすい（手間がかからない）点があります。その理由は、PHPがWEB開発に親和性が高いという点からです。</p>
<h2>今日のゴール</h2>
<p>今日は簡単にPHPを使って、ある就活サイトの情報をまとめて収集します。</p>
<h2>下準備</h2>
<p>必要なモノは、PHPの開発環境：</p>
<p>方法その一：</p>
<a href="http://httpd.apache.org/download.cgi">APACHE</a>
<a href="http://php.net/downloads.php">PHP（最新バージョンで構いません）</a>
<p>具体的なインストールやテストは他のサイトに参考してください。</p>
<p>方法その二：</p>
<a href="https://www.apachefriends.org/jp/index.html">XAMPP</a>
<p>こちらは手間がかからなく、特にWindowsの場合、ファイルのアクセス権限などの設定も回避ができます。</p>
<p>ーーーーーーーーーーーーーーーー</p>
<p>最後に、Web Spiderで使われるPHPパッケージをダウンロード</p>
<a href="http://simplehtmldom.sourceforge.net">simple_html_dom.php</a>
<h2>XAMPPを起動します</h2>
<p>MACの場合</p>
<p>①インストールされたXAMPPを起動します</p>
<p>②STARTをクリックして、APACHEを起動させます</p>
<img width="503" alt="スクリーンショット 2019-01-11 14.24.10.png" src="https://qiita-image-store.s3.amazonaws.com/0/341109/c9eda65d-9b44-0c3b-6dc2-e3165327c9cb.png">
<p>③Networkをクリック</p>
<img width="506" alt="スクリーンショット 2019-01-11 18.48.56.png" src="https://qiita-image-store.s3.amazonaws.com/0/341109/04bfb5bb-becc-ff6f-041b-c342cdfceacb.png">
<p>④localhost:8080->80をクリックして、Enableさます</p>
<img width="509" alt="スクリーンショット 2019-01-11 18.50.08.png" src="https://qiita-image-store.s3.amazonaws.com/0/341109/8eb26708-6161-7757-06e7-1c57164d780e.png">
<p>⑤任意のブラウザを開き、以下のサイトを訪問します</p>
<p>http://localhost:8080</p>
<p>XAMPPの表示が出たらOKです</p>
<img width="1038" alt="スクリーンショット 2019-01-11 18.53.08.png" src="https://qiita-image-store.s3.amazonaws.com/0/341109/440f6eea-dbdc-e69b-a43e-36dbf28a4d8d.png">
<p>⑥XAMPPのVolumesをクリックし、そしてMountをクリック、最後にExploreをクリック</p>
<img width="515" alt="スクリーンショット 2019-01-11 18.56.43.png" src="https://qiita-image-store.s3.amazonaws.com/0/341109/3b7b24db-d095-46fe-6553-24c85308e707.png">
<p>⑦ここでFinderの画面が出て、そしてhtdocsというフォルダを開きます</p>
<img width="298" alt="スクリーンショット 2019-01-11 18.57.50.png" src="https://qiita-image-store.s3.amazonaws.com/0/341109/599906fe-f85c-15ca-1ec1-768a4be86295.png">
<p>⑧先にダウンロードされたsimple_html_dom.phpをhtdocsにコピー</p>
<img width="320" alt="スクリーンショット 2019-01-11 19.00.10.png" src="https://qiita-image-store.s3.amazonaws.com/0/341109/618ca4c5-333f-e4ea-3f84-8824fc0df389.png">
<p>これで前準備は終了、次はコーディングに移ります</p>
<p>Windowsの場合、操作が少し異なるが、XAMPPを稼働させ、最後にXAMPPがインストールされたフォルダにhtdocsを見つけて、同じようにsimple_html_dom.phpをhtdocsにコピーすればOK</p>
<h2>コーディング</h2>
<p>①まず、先開いたhtdocsフォルダに任意な名前のphpファイルを生成させる、ここでは、Recruit.phpとします（任意なTEXT編集ソフトを使って）</p>

```php:Recruit.php
<?php 
	require_once 'simple_html_dom.php';
	//外部のsimple_html_dom.phpライブラリを使うことを声明
	//ターゲットのサイトアドレスを設定、今回は○ヨタとする
	$address = "https://en-hyouban.com/company/00002695955/1/?pagenum=";
	//最大13ページの口コミ情報がある、ここではHTML解析の知識が必要
	$maxpage = 13;
	//すべてのページを巡る
	for($x=1;$x<=$maxpage;$x++){
		//標的アドレスのページ目を指定
		$goal_add = $address.$x;
		//標的アドレスのサーバーに情報請求
		$html = file_get_html($goal_add);
		//コメントが欲しい場合、コメントクラスを指定（HTML解析による）
		$page = $html->find('div.comment');
		foreach($page as $comment){
			echo $comment;
		}
	}
	
?>
```

<p>②以上のような内容を入力し、保存する</p>
<p>③ブラウザに以下のアドレスを入力する</p>
<p>http://localhost:8080/Recruit.php</p>
<p>④しばらくプログラムを動かせ、結果はこうなる：</p>
<img width="737" alt="スクリーンショット 2019-01-11 20.00.27.png" src="https://qiita-image-store.s3.amazonaws.com/0/341109/77047075-7076-107b-f0a6-a7a15a5fc7df.png">
##まとめ
いかがでしたか？今回はPHP開発環境の下準備及び、簡単なデータ収集プログラムの作成、及びプログラムのテストを行いました。
収集されたデータは、ブラウザにアウトプットではなく、ファイルに書き込みこともできます。
テキストファイルの他に、画像や動画まで収集可能です！
また、詳しいデータのクリーニング方法は、<a href="http://simplehtmldom.sourceforge.net">simple_html_dom.php</a>に参照してください。