从没有API的网站检索信息

时间:2014-11-06 15:15:35

标签: java android html

我正在开发一个用Java编程的Android应用程序。我以前曾使用过API,但我想知道是否可以在没有API的情况下检索信息。

例如,尝试检索操作小时数found here。如果我在操作时间单击检查元素,我可以看到它们位于名为" Hours"的标题下。我可以使用这些HTML标签吗?即抓住标题/段落,解析它,并检索所需的结果。

谢谢!

PS。对于新手问题道歉,我不确定如何正确地说出来以便我能收到相关的谷歌搜索结果。

1 个答案:

答案 0 :(得分:1)

我想补充一些评论@LucianoRodríguez。

如您所知,您可以阅读HTTP响应的内容,然后将其解析为HTML。正如您所提到的,您可以访问特定元素并获取其值。

现在的问题是应用程序的通用性。例如,如果您想从一个特定站点获取几个字段,那么您已经拥有了所有工具。获取HTML,使用一个可用的HTML解析器解析它以提取数据,然后就完成了。

但是,如果您要构建应支持各种站点并且可配置的通用应用程序,则会遇到问题。

首先,您必须能够从DOM中提取任何数据。我个人现在正在从事类似的工作。我使用HTMLCleaner从HTML和XPath获取DOM来配置有趣的节点。但并非全部。现代网站非常有活力。通常,信息不是作为HTML在服务器站点生成的,而是由在客户端站点上运行的javascript动态构建的。支持这种情况并不简单。一般来说,我可以采用两种方法:

  1. 使用功能齐全的无头浏览器,它将播放Web应用程序并创建DOM。然后,您可以使用XPath
  2. 从DOM获取数据
  3. 从来源获取数据,例如HTML,XML,JSON等。此方法需要为您要支持的每个站点进行额外配置。