- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
让我们从例子开始。有一个网站,据说它是 Twitter 的克隆版,名为 Tlitter。 Tlitter,就像推特一样,不断更新新内容(其中大部分只是垃圾,因此得名)。与 twitter 不同,没有 JSON/XML API 可以方便地获取内容。为了从中获取数据,您必须获取良好的旧 HTML 并解析它。这是获取该内容的唯一途径。
Titter 管理员有时会改变主意。他们可能会更改网站外观和 HTML 代码,从而导致提取数据的代码无法正常工作。您无法预测何时会进行更改。它可以每周制作一次,每月制作一次,也可能……永远不制作。
您创建了一个 Android 应用程序,它使用来自 Tlitter 的内容来补充来自其他来源(比如 Twitter)的内容。 Twitter 是至关重要的并且没有问题,因为它有一个很好的 api,但是当 Tlitter 停止工作时可能会让你头疼。假设 Twitter 为您提供商店价格,而 Tlitter 为您提供折扣。应用程序在没有 Tlitter 的情况下仍然可以正常运行,但有了 Tlitter,它会变得更好、更完整。
您不想仅仅为了修复所有与 Tlitter 相关的功能而发布新版本,因此您在 Google Appspot 上创建了一个应用程序,它充当您的应用程序和 Tlitter 之间的代理。如果 Tlitter 发生变化,您只需更新代理应用程序,所有用户都可以再次使用。
但是,您的应用程序越来越受欢迎,Google 改变了他们的定价政策,为 Appspot 引入了“实例小时数”。这两件事使您的应用几乎使用了所有免费配额。您不想为 Appspot 付费,您只需要以某种方式解决这个问题。
解决方案不止一种,而且可能没有完美的解决方案。我问你,你会如何解决这个问题?我的想法如下:
提供的示例可能看起来很普通,但它几乎完美地模拟了我的问题。你会怎么解决?如果我能找到实现它的好方法,我会选择解决方案 1 或 3。
最佳答案
对于解决方案 3,您需要寻找一些可以更新的 DSL 或脚本语言。也许jsoup是一个很好的基地。您将加载一个包含选择器字符串 的文件来检索该数据。在下面的示例中(来自 jsoup 网页),您实际上将从 Web 服务加载字符串 (#mp-itn b a)。
Document doc = Jsoup.connect("http://en.wikipedia.org/").get();
Elements newsHeadlines = doc.select("#mp-itn b a");
Jsoup 在 android 上直接运行。
关于java - 从外部网站获取数据(它的结构可能会改变),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8624718/
java.lang.Throwable 的哪些子类可能被空语句抛出? 通过短语“空语句”,我指的是“无”、“分号”和“分号”: // .... A(); B(); C(); try { //
我是一名优秀的程序员,十分优秀!