ルビーでやるよりも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
こんな感じに導入します。
なにかつくってみよう
準備ができましたので早速スクレイピングしていきます。ネタは何にしましょうかね……?そうですね…、僕が普段から利用している(大嘘)カドカワストアのランキングを取得してみるなどをやっていこうと思います。
これのな、グッズ総合ランキングをな……。こうな…
<?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
こうすることで取得できました。売れ筋はパワースポットカードなんですねぇ。へー。
おわり