在 Zillow 和其他 API 网站中解析 XML 数据

Posted

技术标签:

【中文标题】在 Zillow 和其他 API 网站中解析 XML 数据【英文标题】:Parsing XML data in Zillow and other API websites 【发布时间】:2013-02-02 14:40:01 【问题描述】:

我有下面的代码从 zillow.com 的 url 字符串中提取数据(例如)。由于隐私和安全原因,zws-id 未粘贴到 url 字符串中,但页面会正确返回州、城市和社区的所有 api xml 数据。问题是如何提取特定数据而不是所有数据。

<?php
$url = "http://www.zillow.com/webservice/GetDemographics.htm?zws-id=<my_api_id>&state=WA&city=Seattle&neighborhood=Ballard";
echo json_encode(simplexml_load_string(file_get_contents($url)));
?>

这会返回一个充满数据的页面,并且显然是混乱的,因为它没有被解析或以任何方式组织。

返回内容的一小段摘录:"state":"Washington","city":"Seattle","neighborhood":"Ballard","latitude":"47.668328","longitude":"-122.384536",...

我将如何解析这个并得到我需要的东西?如果我只想要纬度,我怎么能使用$.parseJSON(data) 或正确的语法来拉出那个特定的项目(纬度)?

当然,我知道那是 WAY... 但我在 API、xml、json 方面是全新的,我不知道是否有标准的方法来做到这一点,或者它是否特定于公司我正在使用 API。

Zillow.com 提供诸如“示例 API 输出”之类的信息,就像我见过的其他一些网站一样,但我将如何利用这些信息?它是否有益,因为它显示了每个项目将被调用的标签? http://www.zillow.com/howto/api/GetDemographics.htm

只是一个简单的跳跃开始就会有很大帮助。谢谢!

【问题讨论】:

您提供的 URL http://www.zillow.com/webservice/GetDemographics.htm?zws-id=zwsid&amp;state=WA&amp;city=Seattle&amp;neighborhood=Ballard 确实提供了干净的 XML( 提示该 URL 不完整)。请检查。 它工作正常,但我不想公开发布我的 zws-id。谢谢! 我可以理解,但也许您应该注意,由于私有凭据,您无法显示完整的 URI,然后提供一个示例输出您实际获得的内容,因此更清楚您的问题出在哪里.我会假设你在那里得到了一些带有 JSON 的 XML,但我不能尝试我自己的,所以我不能告诉你这是否有效。请改进您的问题,使其更加清晰,并提供一些手头的实际数据(至少是示例性数据),以便您的问题更加清晰。 【参考方案1】:

希望对你有所帮助。

在 PHP 中处理代码:

我注意到代码是从 PHP 开始的,所以让我从那里开始。如果您想查看 XML 对象在 PHP 中的样子,请使用 print_r(),如下所示:

<?php
    $url = "http://www.zillow.com/webservice/GetDemographics.htm?zws-id=<my_api_id>&state=WA&city=Seattle&neighborhood=Ballard";

    $data = simplexml_load_string(file_get_contents($url));

    print_r($data);

这应该会给你这样的结果:

SimpleXMLElement Object
(
    [response] => Object
    
        [region] => Object
        
            [id] => WA,
            [state] => Seattle,
            [city] => Ballard,
            [neighborhood] => Ballard,
            [latitude] => 47.668304,
            [longitude] => -122.384601
        
    
)

我已经截断了很多回复以使其更易于阅读。通过这样做,我可能已经从实际的 Zillow API 响应中弄乱了它,但希望它可以帮助你。因此,要从该响应中获取经度和纬度,您可以这样做:

<?php
    $latitude = $data->response->region->latitude;
    $longitude = $data->response->region->longitude;

用 Javascript 处理代码

您问题的第二部分包括 javascript 代码 $.parseJSON(data)。要将代码从 PHP 转换为 Javascript,您必须像这样 echo 它:

<?php
    $url = "http://www.zillow.com/webservice/GetDemographics.htm?zws-id=<my_api_id>&state=WA&city=Seattle&neighborhood=Ballard";

    $data = json_encode(simplexml_load_string(file_get_contents($url)));

然后在您的 html 中执行:

<script>
    var data = $.parseJSON('<?php echo $data ?>');

    console.log(data); // you can look at the data in your browser console
</script>

希望对你有帮助!

【讨论】:

这个解释很清楚。我只是需要鸟瞰的方法。我是自学成才的,有时让球滚动起来是困难的部分。在那之后,多亏了像你这样的人,这通常是一个平稳的过渡!非常感谢您抽出宝贵的时间。

以上是关于在 Zillow 和其他 API 网站中解析 XML 数据的主要内容,如果未能解决你的问题,请参考以下文章

无法使用请求从 zillow 中抓取自定义属性链接

Zillow“炒房”失败,算法神话破灭了吗?

zillow中模型融合的方法及其代码

python 在zillow中重命名列

解析xml

如何从其他网站获取数据? [关闭]