0

PHP で XPath を使用して Web スクレイピングを学んでおり、JSON で試すまで、多くの Web サイトからコンテンツをスクレイピングし、多くのセレクターを使用して成功しました。

私が非常に奇妙だと思うの $x("//body/text()");は、ブラウザでコマンドを実行すると目的の結果が得られるのに、コードに何か問題があり、それが何であるかわからないことです。

これは、ウェブサイトからオッズをうまくスクレイピングした viper-7 の例です。スクレイプオッズ

一方、同じコードを使用して、本体からjsonを直接スクレイピングしようとしていますが、うまくいかないようです。json_decode だけでなく、json_encode も使用しようとしました。

これは私が修正できないように見えるコードです。JSONをスクレイピングする

4

1 に答える 1

2

JSON を検索する場合は、XPath ではなくJSONPathを使用する必要があります。

<?php
    require_once('json.php');
    require_once('jsonpath.php');

    $parser = new Services_JSON(SERVICES_JSON_LOOSE_TYPE);

    $json = file_get_contents('https://www.realproperty.cl/mobilData.php?functName=getInmuebles&inmuebleID=561');
    $o = $parser->decode($json);
    $result = jsonPath($o, "$..descripcion");

    echo '<ul>'."\n";
    foreach ($result as $item) {
        echo '    <li>'.$parser->encode($item).'</li>'."\n";
    }
    echo '</ul>'."\n";
?>

jsonpath.phpjson.phpが必要です

これは以下を出力します:

<ul>
    <li>"Edificio Trancura se encuentra ubicado en un importante sector residencial de la comuna de Las Condes, a pasos de Av. Crist\u00f3bal Col\u00f3n, cercano a diversos servicios como supermercados, restaurantes, farmacias, strip center, etc.\r\n\r\nEste proyecto cuenta con un innovador dise\u00f1o que incluye espacios de doble altura en los departamentos (3 dormitorios), lo que genera una gran sensaci\u00f3n de amplitud y a su vez permite un mejor ingreso de luz natural.\r\n\r\nRecibimos su propiedad en parte de pago."</li>
    <li>"Elevador"</li>
    <li>"Condominio"</li>
    <li>"Estacionamiento Visitas"</li>
    <li>"Bodega"</li>
    <li>"Estacionamiento cubierto"</li>
    <li>"ATM"</li>
    <li>"Colegio"</li>
    <li>"Farmacia"</li>
    <li>"Mall"</li>
    <li>"Parada Bus"</li>
    <li>"Parada de taxi"</li>
    <li>"Restaurante"</li>
    <li>"Supermercado"</li>
    <li>"Universidad"</li>
</ul>

http://viper-7.com/hMxQLaを参照してください(必要なライブラリを貼り付けました - コードはリストの最後にあります)

于 2014-06-05T01:06:54.917 に答える