使用密码从网站获取 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 数据[重复]的主要内容,如果未能解决你的问题,请参考以下文章