1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

今更ながらPHPでスクレイピングしてみた

Posted at

###概要
LineBot作るためにPHPで初めてスクレイピングしたのでPHPでスクレイピングしたお話

『PHP スクレイピング』でgoogle様に聞くとPHPQueryというのを使うと簡単にスクレイピングができるらしいのでPHPQueryを使っていきます。

参考サイト
https://qiita.com/nadonado/items/0ac037d90c5248b7eac3

###今回の目標
今回は送られてきた英単語に対してその英単語の例文を返すBotを作るので、英ナビ( https://www.ei-navi.jp/ )から例文を取得するpログラムを組みます。

###PHPQueryの設置
PHPQueryの公式サイト( https://code.google.com/archive/p/phpquery/downloads )
一番上のZipfailをダウンロード

zipファイルを解凍

スクリーンショット 2020-04-30 14.57.30.png
あとはこんな感じで設置(今回はMAMPで動かしてます)
PHPQuery-onefile.phpには何も書き込まないでOKです。
index.phpでPHPQuery-onefile.phpを読み込んで使います。(設置簡単すぎてワロタ)

###スクレイピングするサイトの構造を見る
スクリーンショット 2020-04-30 15.08.31.png

英ナビのサイトを開いてみてみると以下のことがわかると思います

urlは https://www.ei-navi.jp/dictionary/content/検索した単語 になっている
例文はexampleというclassに入っている

この2つのことがわかったので実際にコードを書いていきます
###サンプルコード

index.php
// 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の部分を変えると取ってくる値も変わります。

###終わりに
スクレイピングをするのは意外と簡単なので初学者におすすめです。
個人的に面白かっったのでもっとやりたい分野です

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?