###概要
LineBot作るためにPHPで初めてスクレイピングしたのでPHPでスクレイピングしたお話
『PHP スクレイピング』でgoogle様に聞くとPHPQueryというのを使うと簡単にスクレイピングができるらしいのでPHPQueryを使っていきます。
###今回の目標
今回は送られてきた英単語に対してその英単語の例文を返すBotを作るので、英ナビ( https://www.ei-navi.jp/ )から例文を取得するpログラムを組みます。
###PHPQueryの設置
PHPQueryの公式サイト( https://code.google.com/archive/p/phpquery/downloads )
一番上のZipfailをダウンロード
zipファイルを解凍
あとはこんな感じで設置(今回はMAMPで動かしてます)
PHPQuery-onefile.phpには何も書き込まないでOKです。
index.phpでPHPQuery-onefile.phpを読み込んで使います。(設置簡単すぎてワロタ)
英ナビのサイトを開いてみてみると以下のことがわかると思います
urlは https://www.ei-navi.jp/dictionary/content/検索した単語 になっている
例文はexampleというclassに入っている
この2つのことがわかったので実際にコードを書いていきます
###サンプルコード
// phpQueryの読み込み
require_once("./phpQuery-onefile.php");
$search_word = "dog";//botの時は送られてきた単語が入るが今回は検索結果を固定する
$html = file_get_contents("https://www.ei-navi.jp/dictionary/content/".$search_word);
$sentences = phpQuery::newDocument($html)->find(".example");
foreach($sentences as $sentence) {
$Example_sentence = pq($sentence);//pq()の形で再定義が必要
$sentence_list = $Example_sentence->text();
echo $sentence_list."<br />";
}
今回は犬(dog)の例文を抜き取るれるよう作りました
$search_wordの部分を変えると取ってくる値も変わります。
###終わりに
スクレイピングをするのは意外と簡単なので初学者におすすめです。
個人的に面白かっったのでもっとやりたい分野です