コミュ障だから明日が僕らをよんだって返事もろくにしなかった

何かを創る人に憧れたからブログをはじめたんだと思うよ

雑スクレイピング in ペチピー

ルビーでやるよりもPHPでやる方が有用なのではないかと思い立ったのでやってみる。

Rubyって無料の環境でWebアプリを作るってなったらほぼ選択肢ないんですよね。そんなわけで今日はみんな大好きPHPスクレイピングをやっていきます。PHPでのスクレイピングに使えそうなツールってよく知らないので、雑にググって出てきたphpqueryってのを使っていきます。

ダウンロードはこちらから。僕はComposerから落としてきます。
Google Code Archive - Long-term storage for Google Code Project Hosting.

Composer過去記事
inujini.hatenablog.com
Composerについてはこちらから。これが何かといえばRubyでいうGem、Node.jsでいうnpm的なやつです。

# 雑な導入手順
> composer init
> composer search phpquery
> composer require electrolinux/phpquery

こんな感じに導入します。


なにかつくってみよう

準備ができましたので早速スクレイピングしていきます。ネタは何にしましょうかね……?そうですね…、僕が普段から利用している(大嘘)カドカワストアのランキングを取得してみるなどをやっていこうと思います。

store.kadokawa.co.jp

これのな、グッズ総合ランキングをな……。こうな…

<?php
// 要phpquery
require './vendor/autoload.php';

$html = 'https://store.kadokawa.co.jp/shop/';
// https対策
$arr_context_options=array(
    "ssl"=>array(
        "verify_peer"=>false,
        "verify_peer_name"=>false,
    ),
);  

// データの取得
$response = file_get_contents($html, false, stream_context_create($arr_context_options));
$dom = phpQuery::newDocument(mb_convert_encoding($response, 'HTML-ENTITIES', 'auto'));
$i  = 1;
foreach($dom[".goods_ > .StyleR_Frame_:eq(1) "]->find('a') as $ranking){
    echo $i."".pq($ranking)->attr('title').PHP_EOL;
    $i++;
}

結果

> php ***.php
1位 大木ゆきの 宇宙とつながる パワースポットカード
2位 けものフレンズ2 第1巻Blu-ray
3位 「ようこそ実力至上主義の教室へ11」MFたぺJセット
4位 けものフレンズ2 第2巻Blu-ray
5位 けものフレンズ2 第3巻Blu-ray

こうすることで取得できました。売れ筋はパワースポットカードなんですねぇ。へー。


おわり