用密码从网站抓取xml数据


Grab xml data from website with password

我想从一个网站抓取数据,说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>

但是url是由密码和用户名保护的(我有)。

我认为我可以使用cURL函数,但我从来没有使用过它。我可以将数据也存储为对象吗?

编辑:


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

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

如果您反对HTTP授权,您可以简单地在curl中使用-u参数。看看这个答案:使用带有用户名和密码的cURL ?

如果你反对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

希望对你有帮助。