Goutte でスクレイピング

Goutte は a screen scraping and web crawling library for PHP だそうです。
私は twilog をブックマーク代わりに使っているのですが、 Goutte を使ってツイートをスクレイピングしてみようと思います。

なお

Goutte depends on PHP 5.4+ and Guzzle 4+.
If you need support for PHP 5.3 or Guzzle 3, use Goutte 1.0.6.

との事なので、ご注意ください。

インストール

  • composer.json

    { "require": { "fabpot/goutte": "~2.0" },

  • composer 実行
$ php composer.phar update fabpot/goutte

実装コード

use Symfony\Bundle\FrameworkBundle\Command\ContainerAwareCommand;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Console\Input\InputArgument;
use Goutte\Client;

class ScrapingByGoutteCommand extends ContainerAwareCommand
{
    protected function configure()
    {
        $this->setName('sample:goutte');
        $this->addArgument('url', InputArgument::REQUIRED);
    }

    protected function execute(InputInterface $input, OutputInterface $output)
    {
        $url = $input->getArgument('url');

        $client = new Client();
        $crawler = $client->request('GET', $url);

        $crawler->filter(
                'body > div#container > div#content > section.tl-tweets > article > p.tl-text'
            )->each(function($node) {
            echo trim($node->text()) . PHP_EOL;
        });
    }
}

これはお手軽ですね!