2016-08-05 45 views
0

我想跟踪通过本地邮政服务发送的包裹:http://tandt.posta.sk/en如何通过PHP或JavaScript读取外部iframe

通过跟踪信息,例如RF166699170SK,我可以找到包裹。

但是当我想通过PHP读取它,例如curl_setopt,通过file_get_contents,或另一种方法,我只读取HTML代码,但在输出缺少文本例如“项目张贴在邮局Dlhé极点”,我可以看到页。

,因为这个页面使用iframe与一些私有方法 http://www.posta.sk/en/sps-embed#tnt?q=RF166699170SK

但是当我尝试读取这个页面(IFRAME),输出缺少有关包例如“张贴在邮局Dlhé北极项目”信息。

输出:

<!DOCTYPE html> 
<html class="embed"> 
    <head> 
    <link href="/sps/style.css?1450227250" media="screen,print" rel="stylesheet" type="text/css" /> 
    <link href="/sps/print.css?1445466449" media="print" rel="stylesheet" type="text/css" /> 
    <title>Slovenská pošta</title> 
    <meta charset="utf-8"> 
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no"> 
    <meta name="format-detection" content="telephone=no"> 
    <meta name="google" value="notranslate"> 
    <script type="text/javascript">CONFIG={"api":"http://api.posta.sk/private","tntShare":{"en":"http://tandt.posta.sk/en/items/{number}","sk":"http://tandt.posta.sk/zasielky/{number}"},"lang":"sk","home":"http://www.posta.sk","embed":true}</script> 
    <script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=true"></script> 
    <script src="/sps/script.js?1457665771" type="text/javascript"></script> 
     </head> 
    <body> 
    <script type="text/javascript"> 
//<![CDATA[ 
     var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www."); 
     document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E")); 
//]]> 
</script><script type="text/javascript"> 
//<![CDATA[ 
     try { 
     var pageTracker = _gat._getTracker("UA-9600731-1"); 
     pageTracker._setDomainName("posta.sk"); 
     pageTracker._initData(); 
     pageTracker._trackPageview(); 
     } catch(err) {} 
//]]> 
</script> 
    </body> 
</html> 

是否可以阅读通过PHP或JavaScript这个包裹?

+0

如果选中该页面的网络活动,你可以看到,http://api.posta.sk/private/search?q=RF166699170SK&m= tnt有你需要的JSON响应。然而,因为它在'私人'的路径中,我猜你需要在你自己的网站上使用它的权限。 – apokryfos

回答

0

如果您检查page you linked的网络连接,则可以看到有一些数据是通过JSON请求加载的。在您的示例中,请求的数据来自http://api.posta.sk/private/search?q=RF166699170SK&m=tnt

也许这将是从这API直接获取数据的最简单方法,而不是试图解析结果。关键是一样的。你可以这样在PHP中转换响应:

<?php 
    $packageKey = 'RF166699170SK'; 
    $data = json_decode('http://api.posta.sk/private/search?q='.$packageKey.'&m=tnt', TRUE); 
?> 

但我不知道是否允许您的邮政服务。 你应该问是否禁止这样做。

+0

非常感谢你 – Roman