☆Yuus Memo☆
非エンジニアの方でも業務を効率化できるプログラムを紹介します!
PHP

【PHPスクレイピング】WEBサイトの情報を取得してみよう『Goutte』

皆さんこんにちは!!
今回は、以前書いた記事の手法解説記事になります。

以前書いた記事とは、下記の【WordPress】Katawaraで完全自動まとめサイトを作ってみた!!で使用している2ちゃんねるから自動で掲示板の内容を取得してくる部分です。

【2021 WordPress】Katawaraで完全自動まとめサイトを作ってみた!!WordPressのお勧めテーマのKatawaraで完全自動まとめサイトを作ります。 2ちゃんねるやYoutubeなどのまとめサイトは副業にもお勧めです。...
Yuu

スクレイピングは必須技術です。例えば

  • ニュースサイトにアクセスし、現在のトレンド情報を集める
  • 天気予報サイトにアクセスし、天気によって自動でメールを送る
  • 株やFXの情報を自動で取得

など、スクレイピングを使用することで、検索して情報を集める手間が省けます。

今回は、Goutteを用いた、PHPでのスクレイピングの解説が主なので、WordPressの記事の自動投稿の解説は行いません。
PHPが使用できる方であれば、WordPressの自動投稿プログラムを書くのは簡単です。

Goutteのインストール

今回スクレイピングに使用するライブラリーは『Goutte』になります。
Goutteの特徴としては

  • 本体のコードが短く分かりやすい
  • 軽量である
  • 他のライブラリーと連携することで多機能である

といったところでしょうか。
スクレイピングに使用できるライブラリーは、いくつかありますので自分に合ったものを探してみると良いかと思います。

PHPでスクレイピングができるライブラリー

  • phpQuery
  • selenium
  • Goutte
  • PuPHPeteer
  • panther
  • Dusk(Laravel)
  • Guzzle

Composerでインストール

インストール自体はGitHubを見ていただければ分かります。
プロジェクトディレクトリへ移動して次のコードを実行します。

composer require fabpot/goutte

もしバージョンを指定してインストールしたければ、次のコマンドを流してください。

composer require fabpot/goutte "^3.2.3"

これでインストールされたかと思います。

『Goutte』の使用方法

それでは、 簡単な使い方の解説をします。

試しに、このブログのトップページをスクレイピングしてみましょう。
以下のようにすればそのページのhtml情報は取ってこれます。

<?php
require 'vendor/autoload.php';
use Goutte\Client;
 
$client = new Client();
$url = 'https://www.yuu-progra.com/';
$crawler = $client->request('GET',$url);
$html = $crawler->html();
 
print_r($html);

ブラウザーからファイルにアクセスするか、ターミナル上で次のコマンドを流してください。

php sample.php

htmlが取得できているのがわかるかと思います。
非常に簡単ですね!!

2ちゃんねるからスクレイピング

上の使い方でURLを指定している部分を取得したい掲示板のURLに変更するだけです。

例えば、「http://hayabusa3.2ch.sc/test/read.cgi/news/1608862830/」
とすると、ニュース速報@2ch掲示板の書き込みが取得できます。

基本はこれだけです。
あとは取得したhtmlの中から好きな情報を抜き取るだけです。

まとめ

今回は、PHPでスクレイピングを行う基本を書いてみました。
2ちゃんねるのまとめサイトの場合、ジャンルだけ選び、取得する板はプログラムで決めて動的に取得する様にする必要があるので、慣れるまでは少し難しいです。

もし、サンプルサイトの様なサイトを作りたければ、今回のサンプルを少し応用すれば簡単に作れます。
※Cronで自動実行する設定は別途必要です。

次は、APIを使用してYoutubeの動画をスクレイピングする方法を解説してみようかと考えています。

最後までお読み頂きありがとうございました!!

今回の記事の内容を応用すると以下のような自動更新のまとめサイトが作れます。

おもしろニュース

ご興味のある方はコメント下さい。
多少PHPの知識がある方でしたら、簡単に作れるかと思います。

POSTED COMMENT

  1. 名無し より:

    非常に勉強になりました。
    2chをスクレイピングしてWordPressに投稿するコード可能であれば拝見させて頂きたいです。
    どうぞよろしくお願いいたします。

    • yuuuuuu より:

      コメントありがとうございます!!
      具体的にどの部分のコードを知りたいのでしょうか?

      • 2chをスクレイピング
      • WordPressへ投稿

      コード全文をコメントに書くと見づらいかと思いますので、見たい部分のコードを書かせていただきます。

      • 名無し より:

        ご返信ありがとうございます!
        念の為どちらも知りたいのですが、強いて言うならば2chをスクレイピングの方ですね。
        大変お手数ですが、お手隙の際にご教授何卒よろしくお願い致します。

名無し へ返信する コメントをキャンセル