Do You PHP はてブロ

Do You PHPはてなからはてブロに移動しました

DOM::loadHTML - 「PHPで街を育てる」の続きの続きの続き

このネタも引っ張りすぎです。これで最後(多分)ということで、さりげなく。。。

で、本題。前に紹介した

ですが、作者が同僚ということが判明。。。早く言ってよっ!で、話しているうちに「PHP5だったらDOMで一発じゃーん」「。。。あ!そういえば」という流れになり、コードを書き直しました。といっても、HTML→XHTML→SimpleXMLの部分だけですが。

<?php
error_reporting(E_ALL);
require_once('HTTP/Request.php');

define('HATENA_URL', 'http://twitter.g.hatena.ne.jp/keyword/MyMiniCity%e9%83%a8');
define('SLEEP_TIME', 3);
function sendRequest($url) {
    $request = new HTTP_Request($url);
    $request->addCookie('X-MV-Referer', "");
    $request->addCookie('X-Ref-Ok', "1");
    $response = $request->sendRequest();
    if (PEAR::isError($response)) {
        echo $request->getResponseCode();
        return false;
    }
    return $request->getResponseBody();
}

$doc = sendRequest(HATENA_URL);
if (!$doc) {
    die('request failed');
}

$doc = mb_ereg_replace('\x1c', '', $doc);

$dom = new DOMDocument();
$dom->loadHTML($doc);
$xml = simplexml_import_dom($dom);
foreach ($xml->xpath('//div[@class="section"]//td[2]/a[starts-with(.,"http://")]') as $element) {
    $url = $element[0];
    echo "request : $url ... ";
    echo (sendRequest($url) !== false ? 'OK' : 'FAILED') . "\n";
    sleep(SLEEP_TIME);
}

しばらくDOMを使ってなかったので、loadHTMLメソッドなんて覚えてないよっ!(負け惜しみ)