我想从一个网站抓取数据,说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
希望对你有帮助。