artisanコマンドを用いてwebスクレイピングをしよう ~3. Goutteの使用法、フィルタリング~

artisanコマンドを用いてwebスクレイピングをしよう ~3. Goutteの使用法、フィルタリング~

こんばんは、のるぼるのんです。

今週は割とゆったり過ごしてしまいました。結果やりたかった事が半分くらいしか終わらず、、、

もう少し自制して、環境作りから始めないとダメかな。。。

 

さて、前回、前々回、とウェブスクレイピングの勉強を行なっていますが、前回はこのブログにアクセスして、大量の情報を取得した所までいきました。

今回はGoutteのフィルタリング機能を使用して、様々な意味のある情報を集めてみましょう。

 

1. ページtitleを取得


goutteを使用してウェブスクレイピングをする時、よく使うことになるのがfilterメソッドかな、と思います。

まずはfilterメソッドを使用して、このサイトのトップページのタイトルを取得してみたいと思います。

コードの記述は、前回同様、artisanコマンドを記述するScraping.phpに書いていきましょう。

・Scraping.php

filterメソッドでtitle要素を取得し、テキストのみを出力する事が出来ました。

さて、現状トップページのみにアクセスしているので、もっと階層の深いページにアクセスしていきましょう。

 

2.下位ページにアクセスしてみよう


このブログのURLはhttps://tac-blog.tech/index.php/2018/08/03/tag-list/といった感じで、

ドメイン/index.php/年/月/日/スラグといった形で構成されています。

この情報を元に、トップページからアクセスできる記事のタイトルを取得してみます。

 

まずはトップページから取得できるURLの一覧を取得してみましょう。

filterでアンカータグを選択し、href属性のみを取得しています。

トップページだけでも135のURLがあり、カテゴリやプライバシーポリシーも入っているようです。

更に、重複もありますね。これをもっとわかりやすい配列に変換します。

それでは、記事ページにアクセスしましょう。と言っても、同じようなことを繰り返すだけですが、、、

ちなみに、アイキャッチの画像を取得するとこんな感じ。

 

これで簡単にですが、トップページからのウェブスクレイピングが出来ました。

Goutteにはリンクをクリックする方法や、eachで繰り返し処理を行うなどの機能もありますので、ペジネーションへの対応なども簡単に出来そうですね。ぜひ色々試してみください。

 

尚、相手方のサーバーへ過剰な負荷をかけるなどの行為は法に触れる可能性がありますので、そこらへんはご理解した上で、作業を行なってくださいね。

Laravelカテゴリの最新記事