【问题标题】:How read external iframe via PHP or JavaScript如何通过 PHP 或 JavaScript 读取外部 iframe
【发布时间】:2018-01-01 05:47:25
【问题描述】:

我想跟踪我通过本地邮政服务发送的包裹:http://tandt.posta.sk/en

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

但是当我想通过 PHP(例如 curl_setopt、file_get_contents 或其他方法)读取它时,我只读取了 HTML 代码,但在输出中缺少文本,例如“在邮局 Dlhé Pole 发布的项目”,我可以在页面上看到.

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

但是当我尝试阅读此页面 (iframe) 时,输出有关包裹的缺失信息,例如“在邮局 Dlhé Pole 发布的项目”。

输出:

<!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 阅读有关此包裹的信息?

【问题讨论】:

  • 如果您检查页面网络活动,您可以看到api.posta.sk/private/search?q=RF166699170SK&m=tnt 具有您需要的 JSON 响应。但是,由于它位于 private 路径中,我猜您需要获得许可才能在自己的网站上使用它。

标签: javascript php iframe


【解决方案1】:

如果您检查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);
?>

但我不知道你们的邮政部门是否允许。 您应该询问是否禁止这样做。

【讨论】:

    【解决方案2】:

    有一个可用于包裹跟踪的开放 API。在这里您可以找到更多信息和文档:https://www.posta.sk/informacie/api-dokumentacia

    查询示例:http://api.posta.sk/tracking?l=en&p=1&q=RF166699170SK

    【讨论】:

      猜你喜欢
      • 2015-10-24
      • 1970-01-01
      • 1970-01-01
      • 2016-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多