logo
languageJPdown
menu

PHPで簡単なWebクローラーを作ってみた

約5分で読めます

Webサイトから必要な情報を収集することと言えば、近年流行りのPythonだよね!今回は初心者向けにPHPでスクレイピングを行う方法について紹介します。初心者でも簡単なPHPクローラーを作ります。実際にプログラムコードを書いて説明しているので、ぜひ試してみてください!始める前に、WebスクレイピングとWebクローラーの概要を説明します。

Webスクレイピングとは?

Webスクレイピングとは、WebページのHTML内から情報を抽出することです。詳しくはこちらの記事をご参照ください。

Webクローラーとは?

Webクローラーとは、一般的にWeb上を巡回してWebサイトの情報を収集するボットプログラムのことを指します。詳しくはこちらの記事をご参照ください。

それでは、始めましょう!

ステップ1

Webページに入力ボックスと送信ボタンを追加します。入力ボックスにWebページのURLを入力できます。

ステップ2

データを抽出するときには正規表現が必要です。

function preg_substr($start, $end, $str) // Regular expression      

{      

    $temp = preg_split($start, $str);      

    $content = preg_split($end, $temp[1]);      

    return $content[0];      

}    

ステップ3

データを抽出するときは文字列分割が必要です。

function str_substr($start, $end, $str) // string split       

{      

    $temp = explode($start, $str, 2);      

    $content = explode($end, $temp[1], 2);      

    return $content[0];      

}

ステップ4

関数を追加し抽出した内容を保存します。

function writelog($str)

{

  @unlink(“log.txt”);

  $open=fopen(“log.txt”,”a” );

  fwrite($open,$str);

  fclose($open);

抽出したコンテンツがブラウザに表示されるものと一致しない場合、正しい正規表現を見つけることができません。ここで保存した.txtファイルを開いて正しい文字列を見つけることができます。

function writelog($str)

{

@unlink(“log.txt”);

$open=fopen(“log.txt”,”a” );

fwrite($open,$str);

fclose($open);

}

ステップ5

画像を抽出したいなら、関数も必要とされます。

function getImage($url, $filename=”, $dirName, $fileType, $type=0)

   {

    if($url == ”){return false;}

    //get the default file name

    $defaultFileName = basename($url);

    //file type

    $suffix = substr(strrchr($url,’.’), 1);

    if(!in_array($suffix, $fileType)){

        return false;

    }

    //set the file name

    $filename = $filename == ” ? time().rand(0,9).’.’.$suffix : $defaultFileName;

    //get remote file resource

    if($type){

        $ch = curl_init();

        $timeout = 5;

        curl_setopt($ch, CURLOPT_URL, $url);

        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);

        $file = curl_exec($ch);

        curl_close($ch);

    }else{

        ob_start();

        readfile($url);

        $file = ob_get_contents();

        ob_end_clean();

    }

    //set file path

    $dirName = $dirName.’/’.date(‘Y’, time()).’/’.date(‘m’, time()).’/’.date(‘d’,time()).’/’;

    if(!file_exists($dirName)){

        mkdir($dirName, 0777, true);

    }

    //save file

    $res = fopen($dirName.$filename,’a’);

    fwrite($res,$file);

    fclose($res);

    return $dirName.$filename;

    }

ステップ6

抽出用のコードを書きます。例として、AmazonのWebページを見てみましょう。まず商品のページリンクを入力します。

if($_POST[‘URL’]){

//———————example——————-

$str = file_get_contents($_POST[‘URL’]);

$str = mb_convert_encoding($str, ‘utf-8’,’iso-8859-1’);

writelog($str);

//echo $str;

echo(‘Title:’ . Preg_substr(‘/<span id= “btAsinTitle”[^>}*>/’,’/<Vspan>/$str));

echo(‘<br/>’);

$imgurl=str_substr(‘var imageSrc = “’,’”’,$str);

echo ‘<img src=”’.getImage($imgurl,”,’img’ array(‘jpg’));  

そうすると、抽出する商品が出てきます。以下はスクリーンショットです。

いかがでしたでしょうか。

PythonやJavaScript、PHPなどのプログラミング言語でお仕事にしているプロ級の方にとってはすごく簡単ですが、プログラミングに詳しくない方は練習する必要があります。今では、Webスクレイピング技術の開発に伴い、Webスクレイピングツールが増え、コーディングする必要はもうありません。

例えば、OctoparseのWebスクレイピングテンプレートを使用すると、ワンタッチでWebサイトからデータを収集することができます。皆さんも使ってみましょう!

人気記事

トピックを検索する

今すぐOctoparseを始めて、業務効率化を実現しましょう。

ダウンロード

関連記事

  • avatarTakahashi
    「Webスクレイピングツールを自分でゼロから構築したい」こうしたニーズが近年急増しています。Webスクレイピングツールは、インターネットの情報を収集・保存・分析に役立ちます。そのWebスクレイピングツールで、重要な役目を持つのが「Webクローラー」です。本記事ではプログラミング初心者の方でも、かんたんに作れるWebクローラーの構築方法について解説します。実際に構築をしなくても、Webクローラーの仕組みを理解することは、ITリテラシーを高める上でとても大切です。ぜひ参考にしてみてください。
    2024.02.21 · 7 min read
  • avatarTakahashi
    Webスクレイピングを行う上で、重要な役割を担うのが「XPath」です。しかし、XPathについて正しく理解できていない方も多いでしょう。そこで今回はXPathについて、基本から書き方までわかりやすく解説します。それ以外に、XPathでスクレイピングする手順とXPathを取得する方法についてもご説明します。
    2023.12.07 · 7 min read
  • avatarMurata
    Webスクレイピングを実行していると、403エラーが表示されて、データの抽出ができないことがあります。403エラーには、さまざまな原因があります。この記事では、Webスクレイピングの初心者の方に向けて、403エラーの原因や403エラーの解決策を解説します。
    2023.02.13 · 7 min read
  • avatarTakahashi
    ビッグデータは、市場動向、顧客の好み、競合他社の分析に関連した情報を提供します。今やWebスクレイピングは、単にデータを収集するだけでなく、企業のマーケティング活動において必要不可欠と言ってもよいでしょう。ただし、Webスクレイピングプロセスをスケールアップすると、ブロッキングメカニズムなどの多くの課題が発生し、データを取得できなくなる可能性があります。ここではWebスクレイピングが抱える8つの課題と解決方法を紹介します。
    2023.02.06 · 7 min read