使用密码从网站获取 xml 数据[重复]

Posted

技术标签:

【中文标题】使用密码从网站获取 xml 数据[重复]【英文标题】:Grab xml data from website with password [duplicate] 【发布时间】:2014-06-27 15:30:15 【问题描述】:

我想从一个网站上获取数据,比如 www.example.com/stations 并带有 XML 输出:

<stations>
    <station>
        <name>Loppersum</name>
        <code>LP</code>
        <country>NL</country>
        <lat>53.334713</lat>
        <long>6.7472625</long>
        <alias>false</alias>
    </station>
    <station>
         <name>Ludinghausen</name>
         <code>ELDH</code>
         <country>D</country>
         <lat>51.76184</lat>
         <long>7.43165</long>
         <alias>true</alias>
    </station>
</stations>

但网址受密码和用户名保护(我有)。

我认为我可以使用 cURL 功能,但我以前从未使用过它。 我可以将数据也存储为对象吗?

编辑: 这是一个 HTTP 授权,我使用 PHP

【问题讨论】:

这里有一个关于 HTTP auth 和 cURL 的类似答案,***.com/a/2140445/209585 【参考方案1】:

您没有指定使用哪种登录方案。

如果您反对 HTTP 授权,您可以简单地将 -u 参数与 curl 一起使用。看到这个答案:Using cURL with a username and password?

如果您反对 cookie 授权,它会变得有点复杂。您很可能需要充当网络浏览器并“登录”到该网站,然后执行您的请求。这两个请求都需要访问您提供给 curl 的 cookie jar/文件。

编辑: 作者指出这是使用php的HTTP授权。

解决方案是使用 PHP 的 SimpleXMLElement 来获取 XML 对象。您可以使用 Curl 下载 XML 数据并将其传递给构造函数,也可以让 SimpleXMLElement 为您完成。

试试这个:

$user = 'someuser';
$pass = 'somepass';
$url  = "http://$someuser:$somepass@example.com/stations";
$obj  = new SimpleXMLElement($url, NULL, TRUE);

echo $obj->movie[0]->title; // example

希望对您有所帮助。

【讨论】:

这是一个HTTP授权 那么提供-u 参数应该可以工作。至于对象,我不太确定。这是从 shell 请求的吗? 不,我用 php 做,所以不用命令提示符 在 PHP 中,您可以使用 SimpleXMLElement 来获得您想要的。获取数据后,将其传递给构造函数,如下所示:$obj = new SimpleXMLElement($response);。您还可以通过将第三个参数设置为TRUE 来告诉它$response 是一个URL 而不是XML 数据。更多信息:php.net/simplexmlelement.construct.php

以上是关于使用密码从网站获取 xml 数据[重复]的主要内容,如果未能解决你的问题,请参考以下文章

使用来自网站 API 的 POST 请求获取 Json 数据 [重复]

解析和处理 HTML/XML/纯文本页面 [重复]

使用php从mysql数据库表创建/更新xml文件[重复]

从 IP 获取国家和语言信息 [重复]

从xml字符串获取内部值[重复]

C#如何从网站中只获取一个字符串[重复]