超メモ帳(Web式)@復活

小説書いたり、絵を描いたり、プログラムやったりするブログ。統失プログラマ。


SPONSORED LINK

スクレイピングで使えそうなライブラリを見つけた。


僕はpixivをスクレイピングしてイラストなどを集めているのですが、そのクローラのコアになるプログラムがJava製なのですね。しかも他人の開発したものなんですよ。動作することには動作するんですけど、たまに止まるし、オープンソースじゃないからカスタマイズしたくてもできない。これはいずれ自作しないと不味いなとは思っていたんです。
ちなみに現状動かしてるpixivクローラの記事はこちら。

 

お手軽Pixiv画像収集クローラの作り方 - 超メモ帳(Web式)

 

それと、画像ファイルを取得するだけではなくてRSS形式でログを吐かせて、その絵師さんをお気に入りするなどのコミュニケーションも取りたいなと考えたのです。

 

僕が自由に書ける言語はPHPだけだから、PHPでクローラを組もうかと考えているのです。個人ベースのプロジェクトで自然言語解析もしたかったから、ライブラリは探し続けていたのですね。そしたら見つけた。

 

PHP Simple HTML DOM Parser

 

なんかこれ凄いです。jQueryに近い記述で簡単にDOM要素の内容を取得できます。サンプルを下に書きます。

<?php
// example of how to use basic selector to retrieve HTML contents
include('../simple_html_dom.php');
 
// get DOM from URL or file
$html = file_get_html('http://www.google.com/');

// find all link
foreach($html->find('a') as $e) 
    echo $e->href . '<br>';

// find all image
foreach($html->find('img') as $e)
    echo $e->src . '<br>';

// find all image with full tag
foreach($html->find('img') as $e)
    echo $e->outertext . '<br>';

// find all div tags with id=gbar
foreach($html->find('div#gbar') as $e)
    echo $e->innertext . '<br>';

// find all span tags with class=gb1
foreach($html->find('span.gb1') as $e)
    echo $e->outertext . '<br>';

// find all td tags with attribite align=center
foreach($html->find('td[align=center]') as $e)
    echo $e->innertext . '<br>';
    
// extract text from table
echo $html->find('td[align="center"]', 1)->plaintext.'<br><hr>';

// extract text from HTML
echo $html->plaintext;
?>


やー、ここまで簡単にスクレイピングできるライブラリは見たことないですわ。生のPHPでクローラをごりごり書こうとしたことはあるんですけど、正規表現が面倒くさくてやめました。このライブラリは凄いですわ。面倒な処理が全部省力化されている。なにをしようか想像力がもりもり湧く。
ひとまずpixivのクローラを作ってみようと考えています。ログイン処理とかはWebAPIがあるかとかはまだ調べていないですけど、RSSを生成するのも昔と違って楽になっている。

 

PHPでRSSを簡単に生成できるライブラリを紹介! | tutty.info

 

小さな作業改善のプログラミングは楽しいですね。

 

pixiv年鑑2013 オフィシャルブック

pixiv年鑑2013 オフィシャルブック

 

 

プライバシーポリシー免責事項