从银行网站获取货币汇率


Get currency exchange rate from bank site

我正在尝试使用 curl 从银行网站获取内容。

http://www.zaba.hr/home/wps/wcm/connect/zaba_hr/zabapublic/tecajna

网站是特定的,因为它使用ajax来填充货币兑换表。有一个链接可以将数据下载到文件中,但您必须具有相同的会话 ID 才能执行此操作。

我正在尝试以下代码:

$url="http://www.zaba.hr/home/wps/wcm/connect/zaba_hr/zabapublic/tecajna";
$useragent = $_SERVER['HTTP_USER_AGENT'];
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
curl_setopt($ch, CURLOPT_URL,$url);
$cl = curl_exec($ch);
$dom = new DOMDocument();
@$dom->loadHTML($cl);
@$link = $dom->getElementById('tecajPrn');
echo $suburl = "http://www.zaba.hr".$link->getAttribute('href');

在此之后,我得到了文件链接,但我无法打开它。

另一个奇怪的情况是,我用 curl 获得的链接是http://www.zaba.hr/home/ZabaUtilsWeb/utils/tecaj/danasPrn但当我单击图标时真正的链接是http://www.zaba.hr/ZabaUtilsWeb/utils/tecaj/prn/62/2014

你正在搞乱 cookie 和 ajax(可能是!)。这是环顾四周。试试这个:

首先向页面发送请求以获取 cookie。

$url="http://www.zaba.hr/home/wps/wcm/connect/zaba_hr/zabapublic/tecajna";
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERAGENT, "mozilla 5.0");
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_COOKIEFILE,"cookie.txt");
curl_setopt($ch, CURLOPT_COOKIEJAR,"cookie.txt");
$cl = curl_exec($ch);
curl_close($ch);

之后再提出一个卷曲请求。这次获取 json 数据:

$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERAGENT, "mozilla 5.0");
curl_setopt($ch, CURLOPT_HTTPHEADER, array("X-Requested-With: XMLHttpRequest", "Referer: http://www.zaba.hr/home/wps/wcm/connect/zaba_hr/zabapublic/tecajna"));
curl_setopt($ch, CURLOPT_URL,"http://www.zaba.hr/ZabaUtilsWeb/utils/tecaj/danas");
curl_setopt($ch, CURLOPT_COOKIEFILE,"cookie.txt");
curl_setopt($ch, CURLOPT_COOKIEJAR,"cookie.txt");
$cl = curl_exec($ch);
curl_close($ch);

您的 json 在此变量中可用。使用 json_decode() 解析它

// now parse json from $cl
print $cl;

任何需要的,直接帮助自己!

注意:请确保您具有cookie.txt文件的写入权限。此外,最好使用绝对路径,例如 c:/test/cookie.txt/var/tmp/cookie.txt .