Goutte を使って、Yahooニュースの情報を取得してみました。
とても、簡単で便利ですね。
動作環境
- Laravel5.4
- PHP5.6
- Sqlite
- MacOS10.12
インストール
composer require weidner/goutte
初期設定
config/app.php
providers 配列に以下を追加
Weidner\Goutte\GoutteServiceProvider::class,
aliases 配列に以下を追加
'Goutte' => Weidner\Goutte\GoutteFacade::class,
スクレイピング設定
Yahoo ニュースからタイトル、URL、サムネイル画像を取得する
※サムネイル画像は、存在しない場合があるので、存在チェックをしている
Route::get('/goutte', function() {
$crawler = Goutte::request('GET', 'https://news.yahoo.co.jp/list/?c=economy');
$crawler->filter('.listArea .list li')->each(function ($node) {
$val['url'] = $node->filter('a')->attr("href");
$val['title'] = $node->filter('.ttl')->text();
if ($node->filter('.imgWrap .image img')->count() > 0) {
$val['thumbnail'] = $node->filter('.imgWrap .image img')->attr('data-src');
}
dump($val);
});
return;
});
こんな感じで取得できました。