シンプルスクレイピングシリーズ2020
おっす。今日もブログ更新したゾ。我を褒め称えよ。
はい、てなわけで今日はPHP使ってスクレイピングしていきたいと思います。なんで突然そんなことをやるかといえばなんとなくです。RubyとかPythonとかやるよりPHPで色々いじった方が動くもの作るにはいいんでないかという考えからです。んで、今回利用していくツールはこちらになります。
・ファイル
PHP Simple HTML DOM Parser - Browse Files at SourceForge.net
・ミラー:Github
GitHub - simplehtmldom/simplehtmldom: This is a mirror of the Simple HTML DOM Parser at
ちなみにこれ使う理由は僕が借りているレンタル鯖Composerぶっこめないからできるだけファイル数少なめのやつで試そうと思ったからです。AWSみたいなリッチな環境が使えるブルジョワな皆様は参考にしないでくださいね。
使ってみる
近年はどこもかしこも動的サイトになっているからなかなかうまくとれないんだけど、下のサイト(niftyニュース)普通に取得できた。いやーパーサーあればなんとかなるんじゃねとか思ってたけどそういえばそういうのあること失念してたわw
news.nifty.com
まあniftyのニュースのやつは普通に取得できたんでサンプルコード載せておきます*1。
<?php include_once('../../simple_html_dom.php'); function scraping_slashdot() { $html = file_get_html('https://news.nifty.com/'); foreach($html->find('.widget_topic_set') as $ranking) { $item['title'] = trim($ranking->find('span')[0]->plaintext); $item['link'] = trim($ranking->find('a')[0]->href); $ret[] = $item; } $html->clear(); unset($html); return $ret; } // ----------------------------------------------------------------------------- $ret = scraping_slashdot(); echo '<h1>国内主要ニュース</h1>'; foreach($ret as $v) { echo '<ul>'; echo '<a href="https://news.nifty.com/'.$v['link'].'">'.$v['title'].'</a>'; echo '</ul>'; } ?>
てな感じで確認できました。
さて、動的サイトはどうやって対応しようかね。フリーのレンタル鯖ってSeleniumとか使えんのかね。これ使えるとわりとやりたい放題できるんだけどどうなんだろう……。まあ色々試行錯誤してみます。
*1:今後仕様が変わって取得できなくなったとしても僕は責任は取りません