【PHPでスクレイピング】ダウンロードすることからなんだ。

何が一番ラクなんだろう?

初めてのスクレイピングはPythonだった。

次はRuby。

今は、PHPをすることにしているので、とりあえずPHPでやってみました。

phpQuery

まぁ参考になるサイトはいっぱいある。

まずは「phpQuery-onefile.php」を取得することから。

Pytho、Rubyはライブラリがどうのこうのって感じだったから、ダウンロードで済むほうが楽ね。

https://code.google.com/archive/p/phpquery/downloads

f:id:kisokoji:20180813173238p:plain:w600

ダウンロードされたわ。ZIPファイルじゃないのね。

ダウンロードフォルダに「phpQuery-onefile.php」があった。

なので、作業するフォルダに移動してと。

スクレイピングファイルに

<?php
// phpQueryの読み込み
require_once("./phpQuery-onefile.php");

以上終わり。

あとはURLを設定して

$html = file_get_contents("http://XXXXXXX");
echo phpQuery::newDocument($html)->find("h1")->text();

これで取得できる。

まぁこれはH1タグのテキストなんだけど、私はリンクを取得したかったから

$doc = phpQuery::newDocument($html);
foreach ($doc[".section"]->find(".aaa") as $entry) {
$link = pq($entry)->find("a")->attr("href");
echo $link;
}

って感じでまぁ配列に入れてそこからそのURLに行って情報取得が最終目的だったのだけど。

最終目的の情報はとりあえず、CSVファイルに書き出し。

$file = fopen("data.csv","w");
fputcsv($file,$array);
fclose($file);

PHPのスクレイピングで躓いたのが、クラスのつなげ方かな?

foreach ($doc[".section"]->find(".aaa") as $entry) {}

この書き方がすぐにわからなくていろいろリトライしてみた。

まぁPHPも勉強レベルでまだ慣れてないってこともあるのだけど。

それでも3時間もやればデータが取得できるのは楽かもしれない。

何が一番楽だったかという話になれば、PHPかもしれない。

環境を気にしなくて済むから。