よせブログ

およげ!クローラー!

2022/11/28


技術的

ホーム > 技術的 > およげ!クローラー!

泳ぎといえば、真っ先に思い浮かぶのは?そう、平泳ぎ…

クロールです

これをご覧の皆様は、ネットの海を泳ぎたい!とお思いの方が多数いるでしょう

そんな悩みを、解決してくれるのが、「クローラー」です

キャリオン・クロウラー(D&D)
フォール・クロウラー(D・M)

クロウラーではなくて、クローラーです

#クローラーとは

Web上の文章や画像を取得して、それをデータベースにいれると言ったものをクローラーと言うそうです。アリが餌を巣に持ち帰るように、クローラーもまた、データをデータベースに持ち帰っています。

語源は「這い回る」という意味の英語「crawl」に、「〜する人」を意味する「er」を付け足したものです。

要は、「這い回る人」ということになります。ヒードランやリッカーのようなものが連想されますね。

”カベや てんじょうを はいまわる”
壁や天井を這い回る

コードを見る

実際に進級制作で使用したコードの一部を紹介します。

なお、このコードはクローラーの「Web上の文章やデータを取得」を行う「スクレイピング」という工程を示したものです。

    $link ='https://dm.takaratomy.co.jp/card/detail/?id=dmex08-245';

    $html = file_get_contents($link);
    $dom = new DOMDocument('1.0', 'UTF-8');
    $dom->loadHTML($html);
    $xpath = new DOMXpath($dom);



    foreach($xpath->query('//th[@class="cardname"]') as $node){

    $name = $node->nodeValue;
    echo 'クリーチャー名:',$name,'<br>';

    }

    foreach($xpath->query('//td[@class="typetxt"]') as $node){

    $type = $node->nodeValue;
    echo 'カードタイプ:',$type,'<br>';
    }

    foreach($xpath->query('//td[@class="civtxt"]') as $node){

    $civ = $node->nodeValue;
    echo '文明:',$civ,'<br>';
    }

    foreach($xpath->query('//td[@class="powertxt"]') as $node){

    $power = $node->nodeValue;
    echo 'パワー:',$power,'<br>';

    }

    foreach($xpath->query('//td[@class="costtxt"]') as $node){

    $cost = $node->nodeValue;
    echo 'コスト:',$cost,'<br>';

    }

    foreach($xpath->query('//td[@class="racetxt"]') as $node){

    $race = $node->nodeValue;
    echo '種族:',$race,'<br>';

    }

    foreach($xpath->query('//td[@class="abilitytxt"]') as $node){

    $effect = $node->nodeValue;
    echo '効果:',$effect,'<br>';

    }

    foreach($xpath->query('//td[@class="flavortxt"]') as $node){

    $ftxt = $node->nodeValue;
    echo 'フレーバーテキスト:',$ftxt,'<br>';

    }

    foreach($xpath->query('//span[@class="packname"]') as $node){

    $pack = $node->nodeValue;
    echo '収録パック:',$pack,'<br>';

    }

このコードを実行すると、デュエル・マスターズ公式サイトにあるカード一覧にあるとあるカードのデータが読み込まれ、出力されます。

ちょっとした解説

file_get_contents():リンク内のデータを取り込む

DOMDocument():DOMというすごい技術を使えるようになれる!!!すごい

loadHTML():HTMLコードの取得

DOMXpath():Xpathを使えるようになる(Xpath:省略されたパス)

foreach():for文のような繰り返しを行う

echo:文字列を出力する

要は「取って出す」を行っているだけということ。ほら、簡単でしょう?

あとは変数に入ったデータをデータベースにSQL文と織り交ぜて送れるようにできれば、晴れてクロウラーの完成ということになる。

$sql ="INSERT INTO `c_list`(`c_name`,`civ`, `cost`, `lace`, `type`, `effect`, `power`,`pack`) VALUES ('".$name."','".$civ."','".$cost."','".$race."','".$type."','".$effect."','".$power."','".$pack."')";

これで君も、ヒードランクローラーだ!

使用上のちょっとした注意

複数ページのクローリングを行うと、ページにとても負荷がかかる場合があるので注意しましょう。

コメント

Subscribe
Notify of
guest

0 Comments
Inline Feedbacks
View all comments