繁体   English   中英

使用XPATH和JSON的php Web抓取

[英]php web scraping using XPATH and JSON

我一直在学习使用PHP中的XPath进行Web抓取的方法,并且我成功地从许多网站抓取了内容并使用了许多选择器,直到我尝试使用JSON为止。

我发现很奇怪的是,当我运行命令$x("//body/text()"); 在浏览器中,我得到了预期的结果,但是我的代码有问题,我不知道这是什么。

这是viper-7中的一个示例,在该示例中,我成功地从某个网站上获得了赔率。 赔率

另一方面,我正在尝试使用相同的代码从主体中抓取一个json,但似乎无法正确处理。 我不仅尝试使用json_decode,还尝试使用json_encode。

这是我似乎无法修复的代码。 抓取JSON

如果要搜索JSON,则应使用JSONPath而不是XPath:

<?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 (我粘贴了所需的库-您的代码在清单的末尾)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM