Android:从网站提取信息,但不通过其源代码提取

时间:2016-10-25 11:05:43

标签: android url bufferedreader extraction

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

e.g。我现在在这个页面上工作 http://bet.hkjc.com/marksix/userinfo.aspx?file=lucky_ocbs.asp&lang=en

并且页面中表格中的10个分支名称和其他详细信息不在页面的源代码中。

问题:

有没有办法从页面中显示的最终文本中提取措辞,而不是从源代码中提取数据?如果是的话,怎么办呢?

非常感谢。

4 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

简答:你不能。

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

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

另见:Jsoup

答案 2 :(得分:0)

如果没有下载源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的例子。

答案 3 :(得分:-1)

在JavaScript执行后,

http://phantomjs.org/可用于提取网站的内容。不确定他们是否有Android版本。