解析 FlightRadar24 和 JSOUP

2024-01-04

大家好,我想在 Flightradar24.com 上解析航班 我尝试过 JSOUP 和 Android,但结果为空。

http://postimg.org/image/6hdmp4hgv/ http://postimg.org/image/6hdmp4hgv/

我已阅读... JSOUP 不支持动态网页。 有解决办法吗? 我想要获取纬度、经度等 先感谢您!


在此站点中,航班详细信息通过 JavaScript ajax 调用进行轮询。因此,在页面加载后,它们会调用 ajax 调用获取航班详细信息。如果我们放大某个特定部分,它会使用单独的 JavaScript 文件,例如欧洲使用 europe_all.js。这本质上返回一个包含所有航班详细信息(包括速度、高度等)的 json。它以键值对的形式维护,键是航班 ID,值是详细信息数组。

首先我们需要获取这个json,然后解析它以获取航班id,这是关键,然后再次调用获取详细的飞行轨迹、名称开始时间、结束时间、状态等。轨迹以纬度和经度数组的形式给出,前两个元素指向当前位置。

对于这两个 url,结束数字都是System.currentTimeMillis();。对于第二个 url,参数“f”实际上是航班 ID,它是第一个 json 的键。所以下面的程序将解析这两个 json 并给你数据。

我使用了 full_all.js,它提供了所有的航班信息,这些信息非常庞大。为了限制网络调用,我在 for 循环中放置了一个中断。所以这个程序只打印第一次飞行的详细信息。如果您删除休息时间,您将获得所有航班的所有详细信息,但中间您会收到 10000 个电话。

第一个 json 本身为您提供了足够的信息,如下所示。它只是第一个 json 中的一个条目,它显示 ID 为“36c0ae5”的航班、注册密钥“0D05AD”、当前纬度 (25.54)、经度 (-99.24)、速度 287、高度 16650 英尺等

"36c0ae5": [
    "0D05AD",
    25.54,
    -99.24,
    287,
    16650,
    354,
    "0610",
    "F-KBRO1",
    "A320",
    "XA-BIC",
    1401129559,
    "CUN",
    "MTY",
    "4O321",
    0,
    -1920,
    "AIJ321",
    0
  ]

Program

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Map.Entry;

import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;

public class FlightDetails {

    public static void main(String[] args) throws Exception {

        String allFlightsURL = "http://db8.flightradar24.com/zones/full_all.js?callback=pd_callback&_=" + System.currentTimeMillis();
        String allFlightsJsonString = getJsonString(allFlightsURL);
        JsonParser parser = new JsonParser();
        JsonObject allFlightsJsonData = (JsonObject)parser.parse(allFlightsJsonString);

        String singleFlightUrl = "http://bma.fr24.com/_external/planedata_json.1.4.php?f=###&callback=flight_data_service_cb&_=";
        for(Entry<String, JsonElement> allFlightEntry : allFlightsJsonData.entrySet()){
            StringBuilder urlBuilder = new StringBuilder(singleFlightUrl.replaceAll("###", allFlightEntry.getKey())).append(System.currentTimeMillis());
            System.out.println(allFlightEntry.getKey() + " = " + allFlightEntry.getValue());
            String singleFlightJsonString = getJsonString(urlBuilder.toString());
            JsonObject singleFlightJsonData = (JsonObject)parser.parse(singleFlightJsonString);
            for(Entry<String, JsonElement> singleFlightEntry : singleFlightJsonData.entrySet()){
                System.out.println(singleFlightEntry.getKey() + " = " + singleFlightEntry.getValue());
            }

            break; // Breaking to avoid huge network calls.
        }

        System.out.println("Done");
    }

    private static String getJsonString(String allFlightsURL) throws IOException {
        HttpURLConnection connection = (HttpURLConnection) ((new URL(allFlightsURL).openConnection()));
        connection.setDoOutput(true);
        connection.setRequestProperty("Content-Type", "application/json");
        connection.setRequestProperty("Accept", "application/json");
        connection.setRequestMethod("GET");
        connection.connect();

        BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
        StringBuilder buffer = new StringBuilder();
        String line;
        while ((line = reader.readLine()) != null) {
            buffer.append(line);
        }
        return buffer.substring(buffer.indexOf("(") + 1, buffer.lastIndexOf(")"));
    }

}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

解析 FlightRadar24 和 JSOUP 的相关文章

  • Xamarin Android Webview Javascript

    我正在尝试通过 Xamarin for Android 创建一个移动应用程序 它有一个显示网站的 WebView 问题是正常按钮会触发 但 javascript 事件不会触发 我已经启用了 Javascript 但没有运气 如何在 Andr
  • 如何在android中显示保存在sdcard文件夹中的图像[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 当我正在显
  • AdapterContextMenuInfo 始终为 null

    我尝试通过 android 开发文档中的书来做到这一点 this didn t create a menu i don t know why registerForContextMenu getListView setListAdapter
  • 如何正确释放Android MediaPlayer

    我正在尝试向我的 Android 应用程序添加一个按钮 当点击该按钮时它会播放 MP3 我已经让它工作了 但没有办法释放 mediaPlayer 对象 因此即使在我离开活动后它仍然会继续播放 如果我在react 方法之外初始化MediaPl
  • Recyclerview 动态部分不使用任何第三个库

    我想将标头添加到 recyclerview 我正在尝试使用来实现它 Override public int getItemViewType int position depends on your problem if position 0
  • Dialog.setTitle 不显示标题

    我正在尝试向我的对话框添加自定义标题 但是每当我运行我的应用程序时 它都不会显示标题 我创建对话框的代码是 final Dialog passwordDialog new Dialog this passwordDialog setCont
  • Android 深度链接至 Instagram 应用

    Instagram 已经发布了 iOS 深层链接的 url 方案 但尚未为 Android 创建文档 有没有办法深入链接到 Android 上的 Instagram 应用程序 以转到 Instagram 应用程序中的特定位置 例如 Inst
  • Android Eclipse 上的 Web 服务

    我是 android eclipse java 的新手 事实上这个论坛也是如此 有人遇到过这种情况吗 从用户那里获取输入并通过使用 android eclipse 中的 Web 服务来显示适当的结果 有可用的示例吗 非常感谢 我正在发布教程
  • 为什么是 javascript:history.go(-1);无法在移动设备上工作?

    首先 一些背景 我有一个向用户呈现搜索页面 html 表单 的应用程序 填写标准并单击 搜索 按钮后 结果将显示在标准部分下方 在结果列表中 您可以通过单击将您带到新页面的链接来查看单个结果的详细信息 在详细信息页面中 我添加了一个 返回结
  • Android 构建发布失败,原因为:java.lang.ArrayIndexOutOfBoundsException:213(pr​​oguard 问题)

    我的项目使用调试构建变体构建得很好 但使用发布变体 Android Studio 会抛出 引起原因 java lang ArrayIndexOutOfBoundsException 213 可能是什么问题 如果我设置minifyEnable
  • Android 中如何通过彩信发送图片?

    我正在开发多媒体应用程序 我正在通过相机捕获一张图像 并希望将该图像和文本发送到其他号码 但我不知道如何通过彩信发送图像 MMS 只是一个 http post 请求 您应该使用执行请求额外的网络功能 final ConnectivityMa
  • 如何在 Android 中从 WorkManager 取消工作?

    我已经保存了 WorkManagerUUID转换成String在领域数据库中 这是代码 Constraints constraints new Constraints Builder setRequiredNetworkType Netwo
  • 您使用什么物理 Android 设备进行测试?

    有什么好的推荐用于测试目的的物理 Android 设备吗 我正在苹果阵营寻找像 iPod touch 这样的设备 可以帮助 iOS 开发人员测试他们的东西 我知道有 Nexus One 但那东西相当昂贵 而且我并不真正关心手机的东西 而是可
  • Android:无法使用 DbHelper 和 Contract 类将数据插入 SQLite

    public class Main2Activity extends AppCompatActivity private EditText editText1 editText2 editText3 editText4 private Bu
  • 通过系统应用程序以编程方式静默安装 apk(无需 root)

    我有带有 android sharedUserId android uid system UID 1000 的系统级应用程序 设备未root INSTALL PACKAGES 权限包含在清单中 我可以静默安装下载的 apk 吗 我已经发现这
  • 没有支持 FEATURE_CAMERA_EXTERNAL 的 Android 设备

    根据this doc https source android com devices camera external usb cameras一些 Android 设备允许使用 Camera2 API 访问外部 USB 摄像头 我检查了大约
  • Android:如何从网络异步获取搜索建议?

    我创建了一个可搜索的活动 现在 我想添加从网络服务获取的搜索建议 我想异步获取这些建议 根据添加自定义建议 http developer android com guide topics search adding custom sugge
  • 如何使用 AccessibilityService 在 Android 中模拟按键

    我正在编写一个辅助服务 我一直在尝试在应用程序上进行一些自动搜索 我使用accessibilityservice action paste来填充EditText 然后我需要模拟软键盘上的按键 但我不知道如何做 你们能帮我一下吗 你可以尝试A
  • 我的应用程序中的后退按钮出现问题[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我想在手机关闭时清除共享首选项值 你
  • Android 屏幕方向错误

    我使用的是 Android HTC HERO 2 1 版本 我写的活动

随机推荐

  • python 3.4 谷歌浏览器历史

    我真的被我想做的事情困住了 我想制作一个非常简单的脚本来显示 Google Chrome 的历史记录 当我使用以下代码行时 f open C Users joey AppData Local Google Chrome User Data
  • 使用 ckeditor 整理 html

    您好 我在 ckeditor 方面遇到了一个小问题 基本上我需要让编辑器运行它的 html 清理命令 有什么办法可以做到这一点吗 目前 在我在源代码中输入一些内容然后按保存后 它似乎没有运行我希望它像在 正常 编辑器视图中那样整理 html
  • 给定一个 Android 音乐播放列表名称,如何找到播放列表中的歌曲?

    可以通过查询找到播放列表名称MediaStore Audio Playlists EXTERNAL CONTENT URI然后看看MediaStore Audio PlaylistsColumns NAME柱子 还有一个数据列 MediaS
  • REST Auth 的 Cocoa Base 64 实现

    我可以使用干净 有效的 Base64 实现来通过 HTTP 对 REST 协议进行授权 有人可以帮助我或为我指明方向吗 Thanks 您应该完全没有必要这样做 在较高的层面上 Cocoa 提供了 NSURLConnection 来进行 HT
  • 使用 dlsym 加载已命名的未导出符号?

    是否可以使用以下方式从框架加载命名的未导出符号dlsym 我尝试导入的符号有一个在框架内引用的名称 这是我需要调用的函数 我试着像往常一样做dlopen dlsym方式 但是当我尝试加载未导出的符号时 dlsym返回一个NULL指针 dls
  • 蓝兹编程

    我正在使用 USB 蓝牙适配器在 Raspberry Pi 上使用 BlueZ 进行编程 我需要能够以编程方式连接到 Arduino BT 问题是 Arduino 的蓝牙模块仍在使用传统配对 因此每当我尝试打开设备的套接字时 我都会收到Pe
  • 如何在Python中计算mod b?

    Python中有取模函数吗math图书馆 Isn t 15 4 3 但15 mod 4是1 对吗 有的是 符号 它不仅仅是求余数 而是求模运算
  • 尽管提供了 Twitter Api,回调 URL 仍未获得批准

    在 Twitter 控制台中 我有一个来自 firebase 的回调 url 链接 然而 当我尝试使用 twitter 进行身份验证时 出现错误 Request failed forbidden 403 UserInfo NSLocaliz
  • Gradle eclipse classpath - 在快照和项目依赖之间切换

    我们的 Java 项目中有多个模块 每个模块都会将 SNAPSHOT jar 文件发布到 Nexus 存储库 所有子模块都直接依赖于 SNAPSHOT jar 文件 在开发过程中 我们希望依赖 Eclipse 项目而不是 SNAPSHOT
  • boost::flat_map 及其与 map 和 unordered_map 相比的性能

    编程中的常识是 由于缓存命中 内存局部性可以大大提高性能 我最近发现boost flat map这是基于矢量的地图实现 它似乎并不像典型的那样受欢迎map unordered map所以我没能找到任何性能比较 它的比较如何 它的最佳用例是什
  • 递归地从 XML 中删除空节点

    我想从 XML 元素中删除空节点 该 xml 是由供应商生成的 我无法控制 xml 的生成 但由于 XML 几乎没有空节点 我需要递归删除这些空节点 这个 xml 是从 OMElement 获取的 我使用 XMLUtils 1 从这个对象获
  • 在 Java 中转换 StAX 源

    我有一些代码 例如 XMLInputFactory xif XMLInputFactory newInstance TransformerFactory tf TransformerFactory newInstance org apach
  • 使用 ffmpeg 合并视频

    我尝试过这个命令 ffmpeg i concat 10 mov 11 mov codec copy out mov输出文件 out mov 仅显示第一部电影 10 mov 中的内容 谷歌搜索了几个小时并尝试了很多东西但没有任何效果 我希望在
  • spring boot cloud eureka windows 10 eureka 在最新的 docker 升级后返回 host.docker.internal 作为客户端主机名

    Spring Boot Cloud Disovery 问题 在 Windows 10 上进行 docker 升级后 Eureka 主机名出现问题 注意 docker 不托管 spring 服务 仅托管 mariadb rabbitmq 和
  • cudamemcpyasync 和流行为理解

    我有下面所示的简单代码 它什么也不做 只是使用流将一些数据从主机复制到设备 但在运行 nvprof 后我很困惑 因为 cudamemcpyasync 确实是异步的并且对流的理解 include
  • Discord4J:不存在类型变量 R 的实例,因此 void 符合 Mono

    我有以下错误no instance s of type variable s R exist so that void conforms to Mono
  • 使用 Lodash 删除数组中的元素

    我有这个数组 var fruits Apple Banana Orange Celery 我用Lodash的remove像这样 remove fruits function fruit return fruit Apple Banana O
  • 错误:输入网格不是有效的网格

    我有个问题 所以我有一个 XxYxZ 10x5x20 的 3D 矩阵 我想在等值面的帮助下绘制这个矩阵 因此 首先我需要创建一个网格 但是当我说时 第一个问题就出现了 X Y Z meshgrid 1 10 1 5 1 20 我得到一个 5
  • 如何使用 Kotlin 在 Android 中动态添加按钮

    如何使用 Kotlin 在 Android 中动态添加按钮 我是 Kotlin 新手 请帮忙 您可以通过调用按钮的构造函数来动态创建按钮 var myButton Button this 这 将是活动
  • 解析 FlightRadar24 和 JSOUP

    大家好 我想在 Flightradar24 com 上解析航班 我尝试过 JSOUP 和 Android 但结果为空 http postimg org image 6hdmp4hgv http postimg org image 6hdmp