【问题标题】:Android: Extracting info from a website but not via its source codeAndroid:从网站中提取信息,而不是通过其源代码
【发布时间】:2016-10-25 11:05:42
【问题描述】:

虽然我知道如何通过URLConnectionBufferedReader 提取网站内容并获取其源代码,但有时网站本身会从其他地方获取数据并显示在页面上。

例如我现在正在处理这个页面 http://bet.hkjc.com/marksix/userinfo.aspx?file=lucky_ocbs.asp&lang=en

以及页面中表格中的10个分支名称等详细信息不在页面的源代码中。

问题:

除了从源代码中提取数据外,还有什么方法可以简单地从页面中显示的最终文本中提取措辞?如果是,怎么做?

非常感谢。

【问题讨论】:

    标签: android url bufferedreader extraction


    【解决方案1】:

    是的,有一种方法可以从网站中提取信息,即使它执行一些客户端操作,例如在显示之前从外部网站加载数据。虽然这将是一个非常棘手的解决方案,如果您有机会与网站所有者达成协议并要求他为您的应用程序提供 API,我会选择该选项。

    好的,根据您的问题,您可以先尝试使用Android的WebView来渲染网站。然后只需使用here 描述的方法之一获取 html 内容。这里最棘手的部分是以用户友好的方式制作。当您的应用程序等待来自 WebView 的 onPageFinished 回调时,您必须使用进度条覆盖 WebView。我不确定 WebView 在这种情况下是否正常运行。但值得一试。

    【讨论】:

      【解决方案2】:

      简短回答:你不能。

      原因:呈现 HTML 的是客户端。例如:浏览器、Chrome、Firefox、IExplore 等...由于您没有标记语言的解释器,因此您无法仅获取标记内容,即使浏览器下载所有内容,这也是 HTTP 行为。

      解决方法:由于您提到某些分支不在页面上,我假设它通过一些 Javascript 在客户端运行,您可以做的是检查客户端正在执行什么并通过代码执行)。因为你的客户就是应用程序。

      另见:Jsoup

      【讨论】:

      • 所以即使它完成加载并已经显示在网页中,我也无法从网页中提取文本,即使它正在显示?
      • 什么是“正则表达式”来“删除 HTML 标签”?
      【解决方案3】:

      如果没有下载源 html,您不能只提取您想要的信息。下载源代码后,您可以使用 jsoup 仅迭代到您想要的信息。

      将此添加到您的应用级别 build.gradle 文件

      compile 'org.jsoup:jsoup:1.9.2'
      

      然后你就可以下载并解析源代码了。

      String url = "http://bet.hkjc.com/marksix/userinfo.aspx?file=lucky_ocbs.asp&lang=en";
      InputStream input = new URL(url).openStream();      
      Document doc = Jsoup.parse(input, "ISO-8859-9", url);
      
      Elements sectionElements = doc.select("div#general-info-panel");
      Elements imageElements = sectionElements.select("img[src]");
      

      您需要将上述代码块转换为您的 html 页面源代码。您可以找到如何使用 jsoup 的示例。

      【讨论】:

        【解决方案4】:

        http://phantomjs.org/ 可用于在 JavaScript 执行后提取网站内容。不确定他们是否有 android 版本。

        【讨论】:

          猜你喜欢
          • 2010-09-24
          • 2018-06-18
          • 1970-01-01
          • 2017-12-19
          • 1970-01-01
          • 1970-01-01
          • 2018-10-13
          • 1970-01-01
          • 2019-09-29
          相关资源
          最近更新 更多